Ввод-вывод данных на лист Excel с помощью метода Cells. Диалоговый ввод — вывод в VBA Vba msgbox вывод значения переменной
» мы вкратце познакомились с диалоговым сообщением msgbox. Но это было простейшее информационное сообщение. Теперь рассмотрим подробнее работу с функцией MsgBox и все виды диалоговых сообщений.
Синтаксис функции MsgBox
MsgBox (сообщение [, константы сообщения] [, заголовок] [, файл справки hlp, контекст справки])
Обязательным параметром является «Сообщение», остальные могут быть опущены.
- Константы сообщения — позволяют определить вид диалогов.
- Заголовок – задает заголовок формы диалога.
- Файл справкиhlp — строковое выражение, указывающее имя файла справки для диалогового окна.
- Контекст справки — числовое выражение, указывающее номер контекста файла справки для диалогового окна.
создается следующей командой:
MsgBox «Текст содержащий вопрос», vbYesNo, «Название сообщения»
команда будет выглядеть так:
MsgBox «Текст содержащий вопрос», vbYesNoCancel, «Название сообщения»
создается командой:
MsgBox «Текст содержащий вопрос», vbAbortRetryIgnore, «Название сообщения»
Ниже приведен полный список констант и эквивалентных им цифровых значений:
Выводит сообщение с кнопками OK и Отмена
Выводит сообщение с кнопками Прервать , Повтор, Пропустить
Выводит сообщение с кнопками Да , Нет , Отмена .
Выводит сообщение с кнопками Повтор и Отмена
В сообщениях можно слегка изменить внешний вид, назначить кнопку по умолчанию, добавить кнопку «Справка» путем сложения констант.
vbInformation — добавляет иконку восклицания в сообщение
vbMsgBoxHelpButton — добавляет кнопку «Справка»
vbDefaultButton2 — устанавливает фокус на второй кнопке («Нет «)
Ниже таблица со списком констант иконок и констант, устанавливающих фокус на кнопках:
Выводит иконку критического сообщения (красный овал с крестом)
Выводит иконку с восклицательным знаком (в желтом треугольнике)
Устанавливает фокус по умолчанию на третьей кнопке
Устанавливает фокус по умолчанию на четвертой кнопке
Зеркально переворачивает все элементы в сообщении (см. снимок ниже)
Как узнать какую кнопку в сообщении нажал пользователь?
Определяться выбор пользователя будет с помощью . В некоторых ситуациях можно использовать .
Например, вызовем сообщение двойным нажатием ЛКМ по любой ячейке на листе. В соответствии с выбором пользователя, выведем в эту ячейку текст.
Создаем новую книгу Excel и переходим в режим Visual Basic (Alt+F11). В окне проекта выбираем «Лист1 » и кликаем по нему два раза ЛКМ.
В открывшемся окне редактора кода вводим следующую процедуру:
If MsgBox(«Текст содержащий вопрос», vbYesNo, «Название сообщения») = vbYes Then
Selection = «Нажата ДА»
Else
Selection = «Нажата Нет»
End If
В условии IF мы сравниваем результат возвращенный функцией MsgBox, с константой vbYes т.е. если в сообщении нажата кнопка «Да », тогда функция MsgBox возвращает значение vbYes (6). Полный перечень констант и их цифровых эквивалентов ниже. Теперь попробуйте на Листе 1 кликнуть два раза по любой ячейке.
Примечание: При вызове сообщения выполнение программы останавливается до тех пор, пока не будет получен ответ от пользователя.
Создадим вторую процедуру на Листе 2. Код процедуры следующий:
Select Case mes
Case vbYes: Selection = «Нажата ДА»
Case vbNo: Selection = «Нажата НЕТ»
Case vbCancel: Selection = «Нажата Отмена»
End Select
В этом случае результат вызова MsgBox присваивается переменной mes и далее в Select Case ищется совпадение и согласно совпадения, выполняются действия.
Вот и все. Ниже прикреплен готовый пример, рассмотренный в этой статье.
Перечень констант и значений, возвращаемых функцией MsgBox:
Вывод (передача пользователю) результатов работы программы и других сообщений осуществляется через диалоговое окно сообщений.
Для организации вывода информации используется встроенная функция MsgBox .
2. S = 99
применяется для объединения нескольких строк в одну
3. a = 5: b = 101
MsgBox («a » & «b left» height=»113″ width=»140″ loading=lazy>
Функция InputBox возвращает последовательность символов, введенную в поле ввода (15 ) как данные типа String (строковый). Встроенная функция Val() преобразует строковое значение из поля ввода в числовое.
Как на VBA сохранить файл Excel с названием, взятым из ячейки? | — IT-блог для начинающих
- Запрос — требуемый параметр. Строка, отображаемая в виде сообщения в диалоговом окне. Максимальная длина приглашения — около 1024 символов. Если сообщение распространяется более чем на одну строку, то строки могут быть разделены с использованием символа возврата каретки (Chr (13)) или символа перевода строки (Chr (10)) между каждой строкой.
- Заголовок — необязательный параметр. Строковое выражение отображается в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.
- По умолчанию — необязательный параметр. Текст по умолчанию в текстовом поле, которое пользователь хотел бы отобразить.
- XPos — необязательный параметр. Положение оси X представляет собой приблизительное расстояние от левой стороны экрана по горизонтали. Если оставить поле пустым, поле ввода будет располагаться по горизонтали.
- YPos — необязательный параметр. Положение оси Y представляет собой приблизительное расстояние от левой стороны экрана по вертикали. Если оставить пустым, поле ввода будет вертикально центрировано.
- Файл справки — необязательный параметр. Строковое выражение, которое идентифицирует файл справки, который будет использоваться для предоставления контекстно-зависимой справки для диалогового окна.
- context — Необязательный параметр. Числовое выражение, которое идентифицирует номер контекста справки, присвоенный автору справки, в соответствующий раздел справки. Если контекст предоставлен, также должен быть предоставлен справочный файл.
Многие пользователи предпочитают имена, которые указывают на тип объекта. В предыдущем примере был использован префикс ob, который указывает на то, что объект является элементом управления OptionButton.
Константа | Значение | Нажатая кнопка |
VbOK | ОК | |
VbCansel | Отмена | |
VbAbort | Прервать | |
VbRetry | Повторить | |
VbIgnore | Пропустить | |
VbYes | Да | |
VbNo | Нет |
Состав надстройки
На сегодняшний день надстройка Excel содержит более 100 пользовательских функций, и более 25 макросов. Мы стараемся учитывать ваши пожелания и выпускаем обновления с новым функционалом и улучшениями. Все обновления проходят автоматически в пару кликов, быстро и удобно.
После установки надстройки на ленту Excel добавится новая вкладка — VBA-Excel. Вид данной вкладки зависит от вашей версии программы. В Excel 2016 она выглядит следующим образом:
Visual Basic 6.0. Основные навыки — Глава 8
Щелкая на кнопке Отмена, вы ожидаете, что возвращаемой величиной будет vbCancel. Однако это неверно. Поскольку InputBox() возвращает строку, щелчок на кнопке Отмена приведет к тому, что будет возвращена пустая строка (набор кавычек — «»). Рассмотрите следующий пример, если ничего не введено (пустая строка), то происходит выход из подпрограммы.
Сохранение файла Excel с названием из ячейки — без привязки к ячейке
Теперь давайте представим, что заранее мы не можем определить, какая именно ячейка будет формировать название файла (может B14, а может и нет), поэтому мы можем немного скорректировать алгоритм таким образом, чтобы он брал значение из ячейки, которая является активной, но в этом случае Вы, конечно же, предварительно, должны выбрать ее (т.е. встать на нее).
Замените код процедуры следующим кодом, который совсем немного, но изменен.
Проверяем работу, становимся на нужную ячейку, и запускаем макрос (в процедуре я добавил проверку, если выбрана пустая ячейка, возникнет ошибка).
Часть II Программирование на VBA в Word / Офисное программирование
Привет, сейчас мы рассмотрим ситуацию, когда у Вас возникла необходимость в Excel сохранять файл с определенным названием, которое необходимо сформировать из значения ячейки или даже нескольких. В этой заметке я приведу простой пример реализации данной задачи.
Использование элементов управления на рабочем листе
Элементы управления на рабочем листе могут происходить из двух источников:
- Элементы управления формами. Эти элементы управления являются внедряемыми объектами.
- Элементы управления ActiveX. Эти элементы управления являются подмножеством элементов, доступных в пользовательских диалоговых окнах.
Если Excel находится в режиме конструктора, тестирование элементов управления невозможно. В этом случае нужно выйти из режима конструктора, щелкнув на кнопке Разработчик –> Элементы управления –> Режим конструктора. Эта кнопка работает, как переключатель.
Ввод-вывод данных на лист Excel с помощью метода Cells. Диалоговый ввод — вывод в VBA Vba msgbox вывод значения переменной
- Вставьте новую форму UserForm в проект VBAProject рабочей книги.
- Добавьте элементы управления в форму UserForm.
- Настройте свойства добавленных элементов управления.
- Создайте процедуры «обработчики событий» для элементов управления. Эти процедуры добавляются в модуль кода UserForm и выполняются при возникновении различных событий (например, при щелчке на кнопке).
- Разработайте процедуру, которая отображает форму UserForm. Эта процедура находится в модуле VBA (а не в модуле кода для формы UserForm).
- Определите простой способ вызова на выполнение процедуры, созданной в п. 5. Можно поместить кнопку на рабочий лист, команду ленты и т.д.
Разница операторов « Print » и « Write » заключается в том, что при записи в текстовой файл данных в одну строчку информация будет разделена в случае оператора « Print » пробелами, а при использовании « Write » — запятыми. В остальных случаях принципиальной разницы в них нет.
2. Форматирование документа
Открытый документ Word уже содержит объекты Range, соответствующие многим его элементам. Каждый абзац, таблица, ячейка таблицы, комментарий и т. д. определяют диапазоны. Например, для того чтобы вставить некоторый текст в уже существующий документ, необходимо прописать код:
Причем данная строка будет расположена в конце существующего параграфа. С другой стороны, используя объект Selection, можно также вставить некоторый текст в документ, используя метод Add и присвоение свойства Text объекту Selection:
Надстройка VBA-Excel
АргументPrompt определяет сообщение, которое появится в диалоговом окне. Наберите текст (в кавычках). Используйте переменную типа string или объединенные строковые переменные и строки со значком &, например:
Excel Vba Работа с Текстовыми Файлами
Файл – именованная область любого внешнего накопителя информации. Данные «живут» в памяти компьютера, а файлы – на жестком диске. Программа не работает с файлами напрямую, а использует в качестве посредника операционную систему.
Перед началом работы с файлом необходимо запросить у операционной системы указатель ( дескриптор) файла. Для его получения пользуются функцией « FreeFile ». Затем с помощью оператора « Open » этот указатель связывается с необходимым файлом. Только после этого программа сможет работать с ним. Синтаксис открытия файла следующий:
‘получаем свободный указатель файла и присваиваем его переменной
· FileHandle % – переменная, в которой хранится указатель файла;
· FreeFile – имя функции, возвращающей указатель файла;
· For – ключевое слово, за которым идет описание режима доступа к файлу;
Добавление данных в конец существующего текстового файла. Если файл не существует, он будет создан
Открытие файла в двоичном режиме, т.е. в виде набора байтов. Если файл не существует, но будет создан
Открытие файла для записи текстового файла. При этом вся старая информация будет удалена. Если файл не существует, но будет создан
Открытие файла в режиме произвольного доступа. Такой режим используется для работы с простыми записями. Если файл не существует, но будет создан
· Access – необязательное ключевое слово, за которым следует описание типа доступа;
При режимах доступа Append и Output доступен только тип доступа Write , при Input – только Read , а при Binary и Random доступны все три типа доступа.
· LockType – необязательный параметр, определяющий, смогут ли другие программы использовать этот файл, пока с ним работает ваша программа. Обычно оно связано с работой в сети (см. табл. 16).
К файлу будут иметь полный доступ все пользователи с необходимыми правами
· As – ключевое слово, за которым следует указатель файла.
· # – символ, указывающий, что следующее за ним значение является указателем файла.
· Len – необязательное ключевое слово, за которым должен следовать параметр, определяющий длину записи.
· CharInBuffer % — длина записи для файла, открытого в режиме произвольного доступа ( Random ).
· Close – оператор, закрывающий файл, связанный с указанным дескриптором.
Оператор « Open » только открывает файл для последующей работы. Считывание и запись в файл осуществляется с помощью других методов.
Важно закрывать файл после окончания работы с ним. Оператор « Close » освобождает указатель файла и связанную с ним область памяти.
При работе с файлом, а именно при чтении из него, очень важно определение конца файла. Его можно определить с помощью функции EOF ( End Of File ):
· FileHandle – указатель файла, конец которого определяется.
Функция возвращает True (истина), если конец файла достигнут, в противном случае возвращается False (Ложь).
Текстовой файл открывают в режиме доступа « Input », « Output » или « Append » (см табл. 15). Особенность этого режима в том, что в нем работают только с конкретными печатаемыми символами. Со служебными символами работать бесполезно.
Для записи информации используют два оператора « Print » и « Write », синтаксис которых следующий:
· # FileHandle % — указатель файла, в который будет помещена информация.
· ; – необязательный параметр, использующийся при записи в текстовой файл, означает, что следующее значение будет записано в эту же строчку, а при его отсутствии – в следующую.
Разница операторов « Print » и « Write » заключается в том, что при записи в текстовой файл данных в одну строчку информация будет разделена в случае оператора « Print » пробелами, а при использовании « Write » — запятыми. В остальных случаях принципиальной разницы в них нет.
Для чтения информации из файла применяют операторы « Input » и « Line Input ». Синтаксис их аналогичен друг другу :
· # FileHandle % — указатель файла, из которого будет считана информация.
· VarBuffer – переменная, в которую будет считываться информация.
В Visual Basic нет средств контроля формата ранее созданных файлов. Поэтому символ «2» может быть считан как соответствующее число и наоборот.
· RecNumber – номер байта файла, в который будет записана информация (необязательный параметр).
· NameVar – переменная, содержимое которой будет записано в файл.
Считывание информации из файла в бинарном режиме происходит с помощью следующего оператора:
· RecNumber – номер байта файла, из которого будет считана информация (не обязательный параметр).
· NameVar – имя переменной, в которую будет помещена считанная информация.
При попытке считать информацию из байта, которого нет (за границами файла), то вместо ошибки будет считан нуль в числовом формате, или пустой символ – в случае текстового.
При отсутствии параметра « RecNumber » запись или считывание информации будет происходить в следующем байте файла после того, с которым до этого работали.
Если пользуетесь функцией « EOF » для определения конца файла, помните, что последним будет считан спецсимвол, означающий конец файла, который необходимо удалить.
Сохранять в файлах и извлекать из них можно и графические изображения. Чтобы извлечь из растрового файла или файла пиктограммы и присвоить его свойству « Picture » элементов управления « PictureBox » и « Image », используется функция « LoadPicture ( )» со следующим синтаксисом:
· ImageCtrl – имя элемента управления окном с рисунком, элемента управления изображением или формы;
· Picture – имя свойства объекта, отвечающее за изображение;
Сохранить рисунок из свойства « Picture » можно с помощью оператора « SavePicture » со следующим синтаксисом:
· ImageCtrl – имя элемента управления окном с рисунком, элемента управления изображением или формы;
· Picture – имя свойства объекта, отвечающее за изображение;
· FilePath – полное имя файла с указанием его расположения на диске.
Чтобы получить значение параметра из посвященного Visual Basic раздела реестра Windows , нужно использовать следующую функцию:
· MyString – строка для хранения возвращаемого функцией значения;
· VBKeyName – строковое значение, которое является именем внутреннего подраздела VB / VBA .
· Section – строковое значение, представляющее раздел или подраздел конкретного приложения.
· Key – строковое значение, которое представляет имя параметра в разделе.
· Default – необязательный аргумент, значение которого будет возвращено, в случае ошибки (отсутствие параметра).
Для сохранения некоторого значения в реестре Windows используется следующий оператор:
· MyString – строковая переменная, в которую будет помещено найденное значение.
Для получения из реестра массива, содержащего все значения параметров из определенного подраздела, используется следующая функция:
· MyVariant – возвращаемый функцией массив значений типа « Variant ».
· Section – строковое значение, представляющее раздел или подраздел конкретного приложения.
Для удаления целого раздела параметров применяется оператор со следующим синтаксисом:
VBA и Python для автоматизации Excel и MS Office | Tech&Biz Insights | Яндекс Дзен
Щелкая на кнопке Отмена, вы ожидаете, что возвращаемой величиной будет vbCancel. Однако это неверно. Поскольку InputBox() возвращает строку, щелчок на кнопке Отмена приведет к тому, что будет возвращена пустая строка (набор кавычек — «»). Рассмотрите следующий пример, если ничего не введено (пустая строка), то происходит выход из подпрограммы.