Оператор MsgBox
Оператор MsgBox предназначен для вывода Информационного окна или Диалогового окна. Информационное окно ( в простейшем виде) имеет текст сообщения и единственную кнопку. Окно ожидает нажатие на кнопку и после нажатия выполняется следующий за оператором код программы. При варианте Диалогового окна оператор в качестве функции может присваивать (возвращать) некоторые значения переменной или участвовать в более сложных кодах программы (ниже будут приведены примеры некоторых вариантов кодов программы).
Пример Информационного окна
Пример Диалогового окна
Общий вид и наполнение окна определяется четырьмя аргументами, из которых первый является обязательным, а три других не обязательными аргументами. Квадратные скобки изображены для того, чтобы указать не обязательные аргументы. В коде программы квадратных скобок быть не должно!!!
Для информационного окна синтаксис будет таким:
MsgBox promt [,buttons] [,titl] [,helpfile,context]
А для диалогового окна синтаксис такой:
Переменная = MsgBox (promt [,buttons] [,titl] [,helpfile,context])
Часто в литературе и в Интернете [1 с.321, 5 ] можно встретить такую запись (синтаксис) для оператора MsgBox:
MsgBox (promt [,buttons] [,titl] [,helpfile,context])
Однако, если записать такой код в процедуру программы, то будет выдана ошибка !!!.
Примечание: Для информационного окна при составлении аргумента “buttons” не следует указывать константу, определяющую количество кнопок и надписи на них (см.Табл1). Если константу не указывать окно будет выводится с одной кнопкой “ОК” Указывать несколько кнопок в информационном окне, по-моему, нет смысла !!!. Ниже приведен пример Информационного окна со значком и заголовком окна (Константа, отвечающая за вывод кнопок – опущена).
Аргументы записываются через запятую или точку с запятой, в зависимости от настройки компьютера [2 c.269].
Первый аргумент – promt отвечает за содержание текста сообщения в диалоговом окне и может быть записан:
- в виде текста, заключенного в двойные кавычки;
Если текст очень длинный, то его можно разнести на строки с помощью такого кода:
- в цифровой форме, тогда кавычки опускаются;
- в виде суммы текста и цифр. В этом случае текст берется в двойные кавычки, а цифры записываются без кавычек.
- в виде оператора или суммы текста и оператора. Между текстом и оператором ставится знак &. В этом случае в окно выводится сообщение – результат действия соответствующего оператора и текста.
В примере аргумент записан в виде суммы текста и оператора умножения двух чисел
Пример вывода полного имени файла «Документ», находящегося в одной с программой папке «Пример», которая находиться на рабочем столе (в примере также использован оператор переноса строки vbCrLf см. пример выше.):
- в виде суммы текста и функции, например, возвращающей часть даты
Второй аргумент – buttons. Этот аргумент отвечает за оформление кнопок, выводимых в окне (количество кнопок и надписи на них ) , а также, за вывод различных значков в окно. Пример одного из вариантов оформления диалогового окна приведен ниже:
Для второго аргумента в операторе MsgBox дается такое определение [2]: числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения.
Иными словами второй аргумент можно набрать в виде суммы констант или эквивалентным им числовых значений. В статьях и литературе этот момент описан достаточно невнятно. Практически у всех это описание с небольшими вариациями – одинаково. Видимо, лучше этот момент пояснит пример написания второго аргумента "buttons" с, практически, максимальным количеством констант.
Переменная= MsgBox ("Пример с кнопками и значками", vbAbortRetryIgnore + vbQuestion + vbDefaultButton2 + vbMsgBoxHelpButton)
или в цифровом виде
Переменная= MsgBox ("Пример с кнопками и значками", 2 + 32 + 256 + 16384)
Можно также записать аргумент в виде комбинации суммы констант в виде имени и значения.
Переменная = MsgBox ("Пример с кнопками и значками" , 2 + vbQuestion + 256 + vbMsgBoxHelpButton_
Результат выполнения приведенных выше кодов выглядит так:
Исходя из назначения, константы и их эквивалентные цифровые значения можно разделить на несколько групп. При написании кода из каждой группы может быть использована только одна константа или цифровое значение.
Табл.1. Имя константы и эквивалентное ей цифровое значение, отвечающие за вывод в диалоговое окно кнопок (количество кнопок и надписи на них)
Табл.2. Имя константы и эквивалентное ей цифровое значение, отвечающие за вывод в диалоговое окно значков
Табл.3. Имя константы и эквивалентное ей цифровое значение, отвечающая за выделение кнопки
Табл.4. Имя константы и эквивалентное ей цифровое значение, отвечающая за вывод кнопки Справка и некоторые другие действия, указанные в таблице ниже:
Табл.5. Перечень констант и значений, возвращаемых функцией MsgBox:
Примеры использования оператора MsgBox в качестве функции [6, 8 ]. В этом случае оператор будет выводить и диалоговое окно на экран монитора и при нажатии на определенную кнопку в окне производить какие либо действия.
Пример1. Если предполагается использовать в Диалоговом окне две кнопки “Yes” («Да») и “No” («Нет»)
то можно воспользоваться следующим кодом:
Или
Пример2 Если предполагается использовать более двух кнопок
то можно воспользоваться следующим кодом:
Ссылки
1. Джон Уокенбах Профессиональное программирование на VBA в Excel. Диалектика. Москва-Санкт-Петербург-Киев, 2002. – 780 с.
2. Комягин В.Б., Коцубинский А.О. Excel 7.0 for Windows 95 в примерах (русская и английская версии) изд.Нолидж. М.,1996, -430 с.
3. Слепцова Л.Д. Программирование на VBA в Microsoft Office 3.
4. Широкова О.А., Гайнанова Р.Ш. Программирование на Visual Basic for Applications в Excel. Казанский (Приволжский)
федеральный университет. Казань. 2012, =153 с.
5.VBA Excel. Функция MsgBox (синтаксис, параметры, значения)
https://vremya-ne-zhdet.ru/vba-excel/funktsiya-msgbox-parametry/
6. Примеры работы с диалоговыми сообщениями (msgbox) в VBA
http://www.programm-school.ru/primer_raboty_s_msgbox.html
7. Построение диалогов
http://it-dm.narod.ru/it_DM/VBA/it_DM_vba_dial1.html
8. VBA-Урок 10. Диалоговые окна (Dialog boxes)
http://moonexcel.com.ua/уроки-vba10-диалоговые-окна_ru
9. Функция MsgBox
http://www.excelworld.ru/stuff/vba_function/loading_data/msgbox/22-1-0-74
10.WWW. PROGRAMM SCHOOL Уроки программирования для начинающих