Самоучитель VBA

       

Встроенные диалоговые окна



В проектах VBA часто встречаются две разновидности диалоговых окон: окна сообщений и окна ввода. Они встроены в VBA, и если их возможностей достаточно, то можно обойтись без проектирования диалоговых окон. Окно сообщений (MsgBox) выводит простейшие сообщения для пользователя, а окно ввода (InpuBox) обеспечивает ввод информации.

Функция



Выводит на экран диалоговое окно, содержащее сообщение

InputBox

и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа string, содержащее текст, введенный в поле.

Синтаксис:

InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])

Аргументы:

  • prompt — строковое выражение, отображаемое как сообщение в диалоговом окне. Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символа возврата каретки (Сhr(13)), символа перевода строки (chr (10)) или комбинацию этих символов (Chr( 13) & Chr (10)) П title — строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения

  • default — строковое выражение, Отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым

  • xpos — числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана. Если этот аргумент опущен, диалоговое окно выравнивается по центру экрана по горизонтали

  • ypos — числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана. Если этот аргумент опущен, диалоговое окно помещается по вертикали примерно на одну треть высоты экрана

  • helpfile — строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан, необходимо наличие также аргумента context

    context - числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо наличие также аргумента helpfile

  • <
    Процедура

    Выводит на экран диалоговое окно, содержащее сообщение,

    MsgBox

    устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата.

    Синтаксис:

    MsgBox (prompt [, buttons] [, title] [, helpfile, context])

    Аргументы:

  • prompt — строковое выражение, отображаемое как сообщение в диалоговом окне

  • buttons — числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию этого аргумента равняется 0. Значения констант, определяющих число и тип кнопок используемого значка, приведены в табл. 11.1 — 11.3

  • title — строковое выражение, отображаемое в строке , заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения

    helpfile — строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан, необходимо указать также аргумент context

  • context — числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо указать также аргумент helpfile

  • Таблица 11.1. Значения аргумента buttons процедуры MsgBox, определяющие отображаемые кнопки в диалоговом окне

    Константа Значение Отображаются кнопки
    vbOKOnly 0
    VbOKCancel 1
    VbAbortRetrylgnore 2
    VbYesNoCancel 3
    VbYesNo 4
    VbRetryCancel 5
    Таблица 11.2. Значения аргумента buttons процедуры м$двох, определяющие отображаемые информационные значки в диалоговом окне

    Константа

    Значение

    Значок сообщения

    VbCritical

    16

    VbQuestion

    32

    VbExclamation

    48

    VbInformation

    64

     
    Таблица 11.3. Значения аргумента buttons процедуры MsgBox, определяющие

    основную кнопку в диалоговом окне

    Константа

    Значение

    Номер основной кнопки

    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.1). Следуя приглашению в этом диалоговом окне, введем в поле ввода имя, например Андрей. Нажмем кнопку ок.

    На экране отобразится диалоговое окно пример окна сообщения с текстом приветствия (рис. 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




    Содержание раздела