Окно ввода данных. Функция InputBox
Окно, создаваемое функцией InputBox, предназначено для ввода строки и содержит однострочное окно редактирования, сообщение и кнопки OK и Cancel. При выборе кнопки OK (или нажатии клавиши Enter) строка, введенная пользователем в окне редактирования, передается в программу; щелчок кнопки Cancel (нажатие клавиши Esc) означает отказ от ввода - InputBox возвращает пустую строку.
Синтаксис вызова функции InputBox таков:
InputBox(prompt [,title ] [,default] [, xpos] [, ypos] [,helpfile, context])
Здесь параметры prompt (сообщение), title (заголовок), helpfile и context имеют тот же смысл, что и для функции MsgBox. Параметр default является строкой, задающей подсказку, появляющуюся в текстовом окне редактирования. Если пользователь не введет новый текст, то эта подсказка и будет служить его ответом. Когда этот параметр не задан, то окно редактирования при открытии пусто. Числовое выражение xpos задает расстояние по горизонтали левой границы окна от левой границы экрана. Если его нет, окно центрируется по горизонтали. ypos - расстояние верхней границы окна от верхней границы экрана. Если его нет, окно центрируется по вертикали.
В следующем примере в окно функции InputBox пользователь должен ввести дату рождения. Далее она проверяется. Если она в интервале от 01.01.1900 до 01.01.1985, запрашивается имя пользователя еще одним вызовом функции InputBox, иначе выдаются информационные сообщения с помощью функции MsgBox. Так как возвращаемое при первом вызове функции InputBox значение - строка, для его преобразования в дату применяется функция DateValue (для преобразования вводимых строк в числовые значения используется функция Val).
Sub ExInput() Dim Msg As String, Title As String, Имя As String Dim Birthday As Date
Msg = "Введите, пожалуйста, " & vbCrLf & "дату своего рождения." 'сообщение. Title = "Окно для ввода даты" 'заголовок. ' Вывод окна для ввода даты в позицию (1500,1000): Birthday = DateValue(InputBox(Msg, Title,, 1500, 1000))
' Проверка даты: If Birthday < "01/01/1900" Then MsgBox "Вы выглядите гораздо моложе!", vbExclamation ElseIf Birthday > "01/01/1983" Then MsgBox "Эта программа не для детей до 16!", vbExclamation Else ' Дата корректна.
Запрос имени пользователя: Имя = InputBox("Здравствуйте! Как Вас зовут?", "Знакомство", _ "Владимир Биллиг",,, "My.hlp", 12) MsgBox Имя & ", рады Вам помочь.", vbExclamation, " Проверка ввода" End If End Sub
Ниже представлен один из возможных диалогов, реализуемых этим фрагментом в случае, когда введенная пользователем дата рождения корректна и вызывается окно для ввода его имени.
Рис. 12.5. Окно для ввода даты
Рис. 12.6. Окно для ввода имени
Рис. 12.7. Окно приветствия