Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Организация диалога с пользователем



В некоторых случаях требуется, чтобы пользователь отреагировал на выдаваемое сообщение прежде, чем процедура будет продолжена, и при этом, возможно, выбрал одну из имеющихся альтернатив или же ввел какие-либо данные. В таких случаях используются стандартные диалоговые окна — окно сообщения или окно ввода данных, которые можно вывести на экран с помощью функций VBA MsgBox и InputBox соответственно. Этими функциями можно пользоваться не только в Excel, но и в других приложениях Office.

Функция MsgBox имеет следующий синтаксис:

MsgBox(сообщение [, кнопки ][, заголовок ][, файлСправки, контекст ])

где:

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

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

Таблица 2. Встроенные константы VBA для свойств диалогов.

Константа Значение Описание
Кнопки
vbOKOnly   Выводится только кнопка OK (принимается по умолчанию)
vbOKCancel   Выводятся кнопки OK и Отмена
vbAbortRetryIgnore   Выводятся кнопки Прекратить, Повторить и Игнорировать
vbYesNoCancel   Выводятся кнопки Да, Нет и Отмена
vbYesNo   Выводятся кнопки Да и Нет
vbRetryCancel   Выводятся кнопки Повторить и Отмена
Значки
vbCritical   Выводится значок "Критическое сообщение"
vbQuestion   Выводится значок "Вопрос "
vbExclamation   Выводится значок "Предупреждающее сообщение"
vbInformation   Выводится значок "Информационное сообщение"
Фокус по умолчанию
vbDefaultButton1   Фокус устанавливается на первой кнопке (принимается по умолчанию)
vbDefaultButton2   Фокус устанавливается на второй кнопке
vbDefaultButton3   Фокус устанавливается на третьей кнопке
Модальность
vbApplicationModal   Приостановить выполнение данного приложения до тех пор, пока не будет получен ответ пользователя (принимается по умолчанию)
vbSystemModal   Приостановить работу всех приложений системы до тех пор, пока не будет получен ответ пользователя

Нужное значение параметра кнопки можно получить сложением этих констант, допускается выбор не более чем одной константы из каждой группы, т.е. можно выбрать одну из констант в группе "Кнопки", еще одну — в группе "Значки" и т.д. По умолчанию, принимается значение этого параметра, равное нулю, что соответствует выбору трех констант с нулевым значением:

vbOKOnly + vbDefaultButton1 + vbApplicationModal

Продолжим описание параметров функции MsgBox:

заголовок — это текст, который будет помещен в строку заголовка диалогового окна сообщения. Если этот параметр будет опущен, принимается заголовок "Microsoft Excel".

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

контекст — это число, определяющее номер раздела в файле контекстно-зависимой Справки.

Наконец, функция MsgBox возвращает значение в точку вызова, которое говорит о том, какую именно кнопку нажал пользователь в диалоговом окне сообщения. Конечно, если там находилась единственная кнопка OK, то выбор у пользователя был не богат, и проверять особенно нечего; если же кнопок было несколько, то после закрытия диалогового окна процедура может проверить, какая именно кнопка была нажата, и в зависимости от выбора пользователя предпринять различные действия.

Для проверки возвращаемого значения также можно использовать встроенные константы VBA.

Таблица 3. Встроенные константы VBA нажатой кнопки.

Константа Значение Нажатая пользователем кнопка
vbOK   OK
vbCancel   Отмена
vbAbort   Прекратить
vbRetry   Повторить
vbIgnore   Игнорировать
vbYes   Да
vbNo   Нет

Вот пример процедуры для вывода диалогового окна сообщения с помощью функции MsgBox и анализа возвращаемого этой функцией результата:

Sub Message1()

Dim msgPrompt As String, msgTitle As String

Dim msgButtons As Integer, msgResult As Integer

msgPrompt = "Вы действительно хотите очистить рабочий лист?"

msgButtons = vbYesNoCancel + vbQuestion + vbDefaultButton2

msgTitle = "Очистка рабочего листа"

msgResult = MsgBox(msgPrompt, msgButtons, msgTitle)

Select Case msgResult

Case vbYes

ActiveSheet.Cells.Clear

Case vbNo

Exit Sub

Case vbCancel

Application.Quit

End Select

End Sub

Текст этой процедуры понятен вам и без комментариев.

Как видно из этого примера, вы можете общаться с пользователем с помощью вывода диалоговых окон сообщений и даже получать при этом информацию о реакции пользователя на эти сообщения. Однако при этом пользователь может выбрать только одну из командных кнопок диалогового окна, ввести же какие-либо данные таким способом невозможно (рис. 2).

Рис.2. Вывод диалогового окна сообщения с помощью функции MsgBox

Для ввода данных проще всего воспользоваться другой функцией — InputBox, во многом похожей на только что описанную нами функцию MsgBox. Она расширяет возможности организации диалога с пользователем, позволяя пользователю ввести данные. Эта функция имеет следующий синтаксис:

InputBox(сообщение [, заголовок ][, умолчание ][,поз X ][,поз Y ] [, файлСправки, контекст ])

где:

сообщение — это подсказывающее сообщение, которое нужно вывести в диалоговом окне;

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

умолчание — это выводимое в поле ввода начальное значение, предлагаемое пользователю в качестве стандартного.

позX — это число, определяющее горизонтальное смещение диалогового окна от левого края экрана (измеряется в единицах, равных 1/72 дюйма). Если этот параметр опущен, окно будет выравниваться по горизонтали по центру экрана.

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

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

контекст — это число, определяющее номер раздела в файле контекстно-зависимой Справки.

Эта функция возвращает в качестве результата либо введенную пользователем в поле ввода строку, если диалог был завершен нажатием кнопки OK, либо пустую строку, если пользователь нажал кнопку Отмена.

Например, следующий оператор присваивает переменной myString введенное пользователем значение:

myString = InputBox("Введите число от 1 до 100:", "Ввод данных")





Дата публикования: 2015-11-01; Прочитано: 332 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...