Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование VBA.pdf
Скачиваний:
374
Добавлен:
03.05.2015
Размер:
3.07 Mб
Скачать

38

2.9.Ввод и вывод данных

Вэтом пункте рассматриваются следующие средства ввода и вывода данных при помощи диалоговых окон:

использование функции MsgBox;

использование функции InputBox;

применение метода InputBox;

именование аргументов,

использование объединения текстовых строк.

2.9.1.Функция MsgBox

Функция MsgBox служит для организации диалоговых окон, содержащих какие-либо сообщения. После своего появления на экране окно сообщения ждет, пока пользователь щелкнет на одной из кнопок, присутствующих в окне. В зависимости от того, на какой кнопке щелкнул пользователь, функция возвращает определенное целое число. Функция MsgBox имеет следующий формат:

MsgBox (Prompt [, Buttons] [, Title] [, Helpfile, Context])

Аргументы рассматриваемой функции означают следующее.

Prompt (Приглашение) – обязательный аргумент этой функции. Значением этого аргумента служит строка текста, которая появляется как сообщение в диалоговом окне. Эта строка текста должна быть заключена в двойные кавычки. Круглые скобки в синтаксисе MsgBox указывают на то, что в данном случае MsgBox является функцией, возвращающей какоелибо значение.

Если скобки опущены, то для VBA это признак того, что данное выражение значение не возвращает и результатом выполнения инструк-

ции MsgBox является только вывод диалогового окна.

Все остальные аргументы этой функции не обязательны.

Buttons (Кнопки) – числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и способ, каким используется окно сообщения; аргумент необязателен. Значение по умолчанию этого аргумента равняется 0; его можно задать в виде констант VBA или целым числом. Если не указан аргумент Кнопки, то VBA предполагает, что в диалоговом окне сообщения присутствует только кнопка ОК. Аргумент Кнопки позволяет управлять следующими параметрами окна сообщения:

количество кнопок в окне;

типы кнопок и их размещение в окне;

пиктограмма, отображаемая в окне;

какая кнопка назначается кнопкой по умолчанию;

режим окна сообщения.

39

Значения констант, определяющих число и тип кнопок используемого значка, приведены в таблице 1, 2 и 3.

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

 

 

 

 

 

 

 

 

Константа

 

Значение

 

Отображаемые кнопки

 

 

 

 

 

 

 

 

vbOKOnly

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

VbOKCancel

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

VbAbortRetrylgnore

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

VbYesNoCancel

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

VbYesNo

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

VbRetryCancel

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Константа

VbCritical

Значение

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

16

VbQuestion 32

VbExclamation 48

VbInformation 64

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

Константа

Значение

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

 

 

 

VbDefaultButton1

0

1

VbDefaultButton2

256

2

 

 

 

VbDefaultButton3

512

3

 

 

 

VbDefaultButton4

768

4

 

 

 

40

При написании программ, в которых в зависимости от нажатой кнопки диалогового окна необходимо выполнить определённое действие, вместо возвращаемых числовых значений удобнее использовать следующие константы VBA, которые делают код программы нагляднее и позволяют избежать ошибок при написании программ.

Константа

Значение

Нажатая кнопка

 

 

 

vbOK

1

OK

vbCancel

2

Отмена (Cancel)

vbAbort

3

Прервать (Abort)

vbRetry

4

Повторить (Retry)

vbIgnore

5

Пропустить (Ignore)

vbYes

6

Да (Yes)

vbNo

7

Нет (No)

Чтобы не ошибиться при вводе значений аргумента кнопки, используйте список констант, который появляется после ввода знака "+". Знак "+" используется для объединения нескольких констант при задании сложного аргумента кнопки. Например, использование в процедуре выражения

vbYesNoCancel + vbQuestion + vbDefaultButton1

приведёт к появлению кнопок Да, Нет и Отмена (константа

vbYesNoCancel), значка (константа vbQuestion) и по умолчанию к использованию первой кнопки (константа vbDefaultButton1).

Примечание

Чтобы просмотреть список всех внутренних констант VBA, необходимо в окне программного кода VBA щёлкнуть левой кнопкой мыши по имени любой константы и нажать клавишу F1. В появившемся окне можно найти все внутренние константы Excel.

Title (Заголовок) – содержит заголовок окна сообщения; аргумент необязательный. Без этого аргумента в заголовке будет выведено имя приложения MS Office, из которого запускается программа на VBA (Excel, Word и т.д.).

Helpfile (Справка) – строковое выражение, содержащее имя справочного файла Windows. Обычно это файл, созданный разработчиком прило-

жения с помощью Windows Help Compiler.

Context (Раздел) – численное выражение, указывающее раздел в справочном файле, относящийся к отображаемому диалоговому окну.

Аргументы Helpfile и Context не обязательны. Они используются или опускаются вместе.

Аргументы функции необходимо перечислять в том порядке, в каком они размещены в её формате. Следовательно, в функции MsgBox они должны располагаться следующим образом:

Prompt [, Buttons] [, Title] [, Helpfile, Context])

41

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

Пример

В приведённой ниже процедуре ФункцияMsgBox() функция MsgBox используется для:

определения, какая из кнопок: Да, Нет или Отмена – нажата (щёлкнута) в диалоговом окне этой функции;

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

Внутренняя константа vbExclamation используется в процедуре для выво-

да в окне сообщения символа . Определение значения нажатой кнопки осуществляется при помощи инструкции If…Then…Else, синтаксис которой будет подробно рассмотрен в дальнейшем.

Sub ФункцияMsgBox() Dim Структура As String Dim Кнопка As Integer

'

'В переменной Структура задается структура диалогового окна Структура = vbYesNoCancel + vbQuestion + vbDefaultButton1

'В переменную Кнопка вводится целое число, возвращаемое MsgBox

'при нажатии кнопки Да, Нет или Отмена в окне сообщения функции

MsgBox

'

Кнопка = MsgBox("Выбрать Да, Нет или Отмена?", Структура, "Примеры функции MsgBox")

'

'На экране отображается соответствующее сообщение '

'в зависимости от значения переменной Кнопка

MsgBox "Равно " & Кнопка, , "Возвращаемое значение"

If Кнопка = vbYes Then MsgBox "Выбрано Да", vbExclamation, "ПРИМЕР 1" If Кнопка = vbNo Then MsgBox "Выбрано Нет", vbExclamation, "ПРИМЕР 2" If Кнопка = vbCancel Then MsgBox "Выбрано Отмена", vbExclamation,"ПРИМЕР 3"

End Sub

Ниже приведены диалоговые окна, выведенные на экран в процессе выполнения процедуры ФункцияMsgBox(). Окна ПРИМЕР 1, ПРИМЕР 2 и ПРИМЕР 3 появляются при нажатии кнопок, соответственно, Да, Нет и Отмена. В окне Возвращаемое значение выводится число 6 при выполнении инструкции MsgBox "Равно " & Кнопка, , "Возвращаемое значение", если нажата кнопка Да.

42

2.9.2.Функция InputBox

Функцию MsgBox целесообразно использовать в случае, если от пользователя надо получить типа Да–Нет или ОК–Отмена. Если необходимо ввести число или текст, то применяется функция InputBox. Эта функция отображает запрос в диалоговом окне ввода, ожидает ввода пользователем строки (или щелчка по кнопке окна) и возвращает строку из поля ввода окна. Функция InputBox имеет следующий формат:

InputBox(Prompt[, Title] [, Default] [, Xpos] [, Ypos] [, Helpfile, Context])

Эта функция требует обязательного задания только аргумента Prompt. Так же, как и в функции MsgBox, значением аргумента Prompt служит текстовая строка, которая отображается в диалоговом окне ввода в

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

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

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

Необязательные аргументы xpos и ypos задают положение окна ввода на экране.

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

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