Встроенные диалоговые окна
В проектах VBA часто встречаются две разновидности диалоговых окон: окна сообщений и окна ввода. Они встроены в VBA, и если их возможностей достаточно, то можно обойтись без проектирования диалоговых окон. Окно сообщений (MsgBox) выводит простейшие сообщения для пользователя, а окно ввода (InpuBox) обеспечивает ввод информации.
Функция |
Выводит на экран диалоговое окно, содержащее сообщение | ||||
InputBox |
и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа string, содержащее текст, введенный в поле. Синтаксис: InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context]) Аргументы: context - числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо наличие также аргумента helpfile |
| |||
Процедура |
Выводит на экран диалоговое окно, содержащее сообщение, |
||
MsgBox |
устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. Синтаксис: MsgBox (prompt [, buttons] [, title] [, helpfile, context]) Аргументы: helpfile — строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан, необходимо указать также аргумент context |
||
Константа | Значение | Отображаются кнопки |
vbOKOnly | 0 | |
VbOKCancel | 1 | |
VbAbortRetrylgnore | 2 | |
VbYesNoCancel | 3 | |
VbYesNo | 4 | |
VbRetryCancel | 5 |
Константа |
Значение |
Значок сообщения |
||
VbCritical |
16 |
|||
VbQuestion |
32 |
|||
VbExclamation |
48 |
|||
VbInformation |
64 |
|||
основную кнопку в диалоговом окне
Константа |
Значение |
Номер основной кнопки |
||
VbDefaultButton1 |
0 |
1 |
||
VbDefaultButton2 |
256 |
2 |
||
VbDefaultButton3 |
512 |
3 |
||
VbDefaultButton4 |
768 |
4 |
||
При написании программ с откликом, в зависимости от того, какая кнопка диалогового окна нажата, вместо возвращаемых значений удобнее использовать следующие константы VBA, которые делают код программы более удобочитаемым и, к тому же, их легко запомнить.
Константа. |
Значение |
Нажатая кнопка |
||
vbOK |
1 |
OK |
||
vbCancel |
2 |
Отмена (Cancel) |
||
vbAbort |
3 |
Прервать (Abort) |
||
vbRetry |
4 |
Повторить (Retry) |
||
vbIgnore |
5 |
Пропустить (Ignore) |
||
vbYes |
6 |
Да (Yes) |
||
vbNo |
7 |
Нет (No) |
||
На экране отобразится диалоговое окно пример окна сообщения с текстом приветствия (рис. 11.2). Если пользователь не введет имя в поле ввода диалогового окна пример окна ввода или нажмет кнопку Отмена, то компьютер выразит свое неудовлетворение действиями пользователя отображением диалогового окна Еще один пример окна сообщения (рис. 11.3).
Рис. 11.1. Диалоговое окно Пример окна ввода
Рис. 11.2. Диалоговое окно
Пример окна сообщения
Рис. 11.3. Диалоговое окно Еще один пример окна сообщения
Private Sub ТестОкон()
'
' Описание переменной
Dim ИмяКлиента As String
'
' Ввод имени пользователя
'
ИмяКлиента = InputBox("Введите ваше имя", "Пример окна ввода")
' Реакция программы на ввод имени пользователя
If, ИмяКлиента <> "" Then
MsgBox "Привет, " & ИмяКлиента, vbInformation,
"Пример окна сообщения"
Else
MsgBox "Невежа, ты забыл ввести свое имя " & ИмяКлиента,
vbExclamation, "Еще один пример окна сообщения"
End If
End Sub
Приведем еще один пример использования диалоговых окон. Этот пример позволяет отобразить на экране диалоговое окно с тремя кнопками да, нет и отмена и информационным знаком.
Клавише <Enter> назначена функция кнопки да. По нажатию одной из этих кнопок на экране отображается сообщение, подтверждающее нажатие.
Sub ТриКнопки()
Dim Сообщение As String
Dim Кнопка As Integer
'
' В переменной Сообщение задается структура диалогового окна
'
Сообщение = vbYesNoCancel + vbQuestion + vbDefaultButtonl
'
' В переменную Кнопка вводится целое число, возвращаемое MsgBox
' при нажатии кнопки
'
Кнопка= MsgBox("Выбираете Да, Нет или Отмена?", Сообщение, "Еще пример")
'
' В зависимости от значения переменной Кнопка,
' на экране отображается соответствующее сообщение '
Select Case Кнопка Case vbYes
MsgBox "Выбрали Да", vblnformation, "Еще пример" Case vbNo
MsgBox "Выбрали Нет", vblnformation, "Еще пример" Case vbCancel
MsgBox "Выбрали Отмена", vblnformation, "Еще пример"
End Select
End Sub