|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Примеры работы с диалоговыми сообщениями (msgbox) в VBA
Время создания: 30.07.2020 21:14
Текстовые метки: Диалоги, InputBox, vba, диалоги, MsgBox
Раздел: Разные закладки - VBA - MsgBox
Запись: xintrea/mytetra_db_adgaver_new/master/base/1484021593lmyh6oul4r/text.html на raw.githubusercontent.com
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В статье "Примеры макросов в Excel. Диалоговое VBA сообщение msgBox " мы вкратце познакомились с диалоговым сообщением msgbox. Но это было простейшее информационное сообщение. Теперь рассмотрим подробнее работу с функцией MsgBox и все виды диалоговых сообщений. Синтаксис функции MsgBox Функция MsgBox имеет следующий синтаксис: MsgBox ( сообщение [, константы сообщения] [, заголовок] [, файл справки hlp, контекст справки]) Обязательным параметром является «Сообщение», остальные могут быть опущены. MsgBox “Текст сообщения”
Диалоговое окно вида:
создается следующей командой: Для создания сообщения такого вида:
команда будет выглядеть так: Сообщение такого вида:
создается командой: т.е. из всех трех примеров в команде меняется только второй параметр (vbYesNo, vbYesNoCancel, vbAbortRetryIgnore). Это и есть значения (константы) определяющие вид сообщения. Параметры (vbYesNo, vbYesNoCancel) могут быть заменены на числовое значение, например диалог vbYesNo можно вызвать, указав 4: MsgBox "Текст содержащий вопрос", 4, "Название сообщения". Ниже приведен полный список констант и эквивалентных им цифровых значений:
В сообщениях можно слегка изменить внешний вид, назначить кнопку по умолчанию, добавить кнопку "Справка" путем сложения констант. Например: MsgBox "Текст содержащий вопрос", vbYesNoCancel+vbInformation+vbMsgBoxHelpButton+vbDefaultButton2, "Название сообщения" построит сообщение вида:
vbInformation - добавляет иконку восклицания в сообщение Ниже таблица со списком констант иконок и констант, устанавливающих фокус на кнопках:
Как узнать какую кнопку в сообщении нажал пользователь? Определяться выбор пользователя будет с помощью условия IF . В некоторых ситуациях можно использовать Select Case . Например, вызовем сообщение двойным нажатием ЛКМ по любой ячейке на листе. В соответствии с выбором пользователя, выведем в эту ячейку текст. Создаем новую книгу Excel и переходим в режим Visual Basic (Alt+F11). В окне проекта выбираем «Лист1» и кликаем по нему два раза ЛКМ.
В открывшемся окне редактора кода вводим следующую процедуру: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) В условии IF мы сравниваем результат возвращенный функцией MsgBox, с константой vbYes т.е. если в сообщении нажата кнопка «Да», тогда функция MsgBox возвращает значение vbYes (6). Полный перечень констант и их цифровых эквивалентов ниже. Теперь попробуйте на Листе 1 кликнуть два раза по любой ячейке. Примечание: При вызове сообщения выполнение программы останавливается до тех пор, пока не будет получен ответ от пользователя. Второй вариант вызова диалога с помощью Select Case . Создадим вторую процедуру на Листе 2. Код процедуры следующий: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) В этом случае результат вызова MsgBox присваивается переменной mes и далее в Select Case ищется совпадение и согласно совпадения, выполняются действия. Вот и все. Ниже прикреплен готовый пример, рассмотренный в этой статье. Перечень констант и значений, возвращаемых функцией MsgBox:
Прикрепленный файл: msgbox.zip
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Так же в этом разделе:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|