Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник по VBA.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
6 Мб
Скачать
☆

Контрольные вопросы

  1. Назначение VBA.

  1. Что такое Объект, Метод, Свойство, Событие?

  2. Как присвоить значение свойству объекта?

  3. Основные окна VBA.

  4. Типы процедур и функций.

  5. Основные объекты Excel.

  6. Состав проекта.

  7. Доступ к ячейкам рабочего листа из модуля.

  8. Что такое переменная и ее назначение в программе?

  9. Объявление переменных. Типы переменных.

  10. Приоритет выполнения арифметических операций.

Лабораторная работа №2. Диалоговые окна

Создание любой программы начинают, как правило, с разработки алгоритма. При реализации любого алгоритма возникает необходимость ввода и вывода различных сообщений. Такую возможность в VBA предоставляют диалоговые окна: message box - окно сообщения и input box - окно ввода.

Использование функции MsgBox для создания окна сообщения

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

Окно сообщения можно применять в двух случаях:

- просто вывести некоторую информацию;

- использовать окно сообщения для предоставления пользователю некоторого выбора.

Синтаксис функции: MsgBox(message, options, title ), где

message - текст сообщения, выводимого на экран (диалогового окна);

options - целое число, содержащее информацию о значке , отображаемом в окне сообщения, наборе командных кнопок и о том, какая из командных кнопок выбрана по умолчанию;

title - текстовая строка, содержащая текст, определённый пользователем и отображаемая в строке заголовка окна сообщения.

Окна сообщения имеют некоторые ограничения:

- окно сообщения не может принимать от пользователя информацию. Оно применяется только для вывода информации;

- в окне сообщения можно использовать только четыре предопределённых значка (пиктограммы) или одну из шести заранее определенных командных кнопок. Нельзя создавать собственные значки или кнопки;

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

В окне сообщения может присутствовать один из четырёх значков. Значки указывают на тип выводимого сообщения. Эти значки и их назначения приведены в табл.1

Таблица 1

Вид значка

Название значка

Назначение

Критическая ситуация

Указывает на возникновение серьёзной ошибки. Нередко после этого программа заканчивается

Предупреждение

Указывает на возникновение программной ошибки, требующей вмешательства пользователя или могущей привести к нежелательным результатам

Запрос

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

Информационное сообщение

Сообщает пользователю состояние программы. Чаще всего используется при завершении выполнения некоторой задачи

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

Таблица 2

Тип сообщения

Значение параметра options

Константы

Критическая ситуация

16

vbCritical

Запрос

32

vbQuestion

Предупреждение

48

vbExclamation

Информация

64

vbInformation

Параметр options может ссылаться на некоторую переменную, содержащую число.

Можно не запоминать синтаксис функции MsgBox и используемые константы. Редактор VB позволяет дописывать операторы: когда в окне кода вводится пробел после имени функции MsgBox, появляется окно, показывающее синтаксис команды (рис.3).

Рис. 3.

Затем, когда введены отображаемое сообщение и запятая после него, раскрывается список констант, используемых для включения в окно сообщения значка или набора командных кнопок. Можно выбрать одну из констант из списка или ввести её вручную (рис.4).

Рис. 4.

Рассмотрим некоторые примеры использования функции MsgBox

Пример 1. Вывести окно сообщения вида:

Текст сообщения

Значок

Командные кнопки

Рис.5.

Оператор, выводящий данное окно сообщения, имеет вид:

MsgBox “Подтвердите удаление записи”, 52

“Подтвердите удаление записи” – текст сообщения, выводимого в диалоговом окне;

число 52 – значение параметра options, представляющее собой сумму значений определяющих вид значка – предупреждение (48) и набор командных кнопок(4)

Пример 2. Вывести окно сообщения вида:

Значок

Текст сообщения

Рис.6.

Окно, приведённое на рис.6, генерируется оператором

MsgBox“Это сообщение содержит значок”, 64, ”Значок”

либо оператором

MsgBox“Это сообщение содержит значок”, vbInformation, “Значок”

Параметр options может быть явно задан числом, либо содержать константу.

Функция MsgBox, возвращающая значения

Рассмотренное применение функции MsgBox обеспечивает вывод той или иной информации. Однако, если необходимо узнать, какой выбор сделал пользователь, то следует получить от функции MsgBox некоторое значение. В этом случае при использовании функции MsgBox есть два отличия:

- значение функции присваивается некоторой переменной;

- параметры функции заключаются в круглых скобках.

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

Таблица 3

Ok

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

Ok, Cancel

В окне сообщения отображаются две кнопки, позволяющие пользователю принять (Ok) сообщение или отменить (Cancel) операцию.

Abort, Retry, Ignore

Отображаются три кнопки, обычно в случае сообщения об ошибке. Пользователь может отменить (Abort) операцию, повторить (Retry)её или проигнорировать (Ignore) ошибку и продолжить программу.

Yes, No, Cancel

Отображаются три кнопки, обычно присутствует вопрос. Пользователь может ответить на вопрос утвердительно (Yes), отрицательно (No) или отменить (Cancel) операцию.

Yes, No

Отображаются две кнопки для простого выбора да (Yes) или нет (No).

Retry, Cancel

Отображаются две кнопки, позволяющие пользователю повторить (Retry) операцию или отменить (Cancel) её.

Чтобы определить, какие командные кнопки отображаются в окне сообщения, нужно задать значение параметра options функции MsgBox. Перечислим значения для всех наборов командных кнопок в табл. 4.

Таблица 4

Набор кнопок

Значения

Константы

Оk

0

VbOkOnly

Ok, Cancel

1

VbOkCancel

Abort, Retry, Ignore

2

VbAbortRetryIgnore

Yes, No, Cancel

3

Vb YesNoCancel

Yes, No

4

VbYesNo

Retry, Cancel

5

Vb RetryCancel

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

Пример 3. A= MsgВох("Принтер не отвечает", VbRetryCancel).

В результате формируется окно вида:

Рис.7

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

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

B= vbExclamation+ vbAbortRetryIgnore

C= MsgBox (“Файл не существует”, B)

Рис. 8

Замечание. При использовании раскрывающегося списка констант, для выбора второй константы нужно нажать знак “плюс” (+) после первой константы.

Если в окне сообщения используется несколько командных кнопок, то можно также указать, какая из них выбирается по умолчанию. Кнопка по умолчанию - та, которая имеет фокус в момент отображения окна сообщения. Она, как правило, чаще всего используется или наиболее предпочтительна при случайном нажатии клавиши <ENTER>. Например, если выводится сообщение, запрашивающее у пользователя подтверждение удаления записи, то, скорее всего, кнопка по умолчанию указывает, что запись не удаляется. И пользователь должен сознательно выбрать ее удаление.

Для того чтобы определить кнопку по умолчанию, например, к параметру options функции MsgBox добавить еще одну константу. Имеется четыре возможных значения для нее. Перечислим эти значения ниже (табл. 5):

Таблица 5

Кнопка по

умолчанию

Значение

Константа

Первая

0

VbDefaultButton 1

Вторая

256

VbDefaultButton2

Третья

512

VbDefaultButton3

Четвертая

768

VbDefaultButton4

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

Параметр options - это сумма констант, определяющих:

- тип сообщения или значок

- набор командных кнопок

- константа, определяющая кнопку по умолчанию.

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

Таблица 6

Кнопка по умолчанию

Значение

Константа

OK

1

vbOk

Cancel

2

vbCancel

Abort

3

vbAbort

Retry

4

vbRetry

Ignore

5

vbIgnore

Yes

6

vbYes

No

7

vbNo

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

Пример 5. Сформировать окно, подтверждающее удаление файла.

Приведем программный код для вывода этого окна:

Sub

file = “книга1.xls” ‘здесь должен быть указан путь к файлу

msg = “Вы действительно хотите удалить файл:’” & file & “’?”

opt = vbExclamation + vbYesNo + vbdefaultButton2

tit = “Удаление файла”

А = MsgBox (msg, opt, tit)

If A = vbYes Then kill file

End Sub

Рис. 9

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

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

Окно ввода содержит:

- сообщение, указывающее пользователю, что нужно ввести;

- текстовую строку (окно), где вводятся данные;

- две командные кнопки OK, Cancel для подтверждения или отмены введенных данных.

Настройка диалогового окна ввода

Функция окна ввода имеет формат:

userinput = InputBox (prompt,[ title],[default])

Эта функция во многом напоминает окно сообщения с возвращенным значением.

Параметры функции:

prompt - сообщение, выводимое пользователю и указывающее на то, что требуется ввести, текст внутри сообщения автоматически переносится на другую строку (длина сообщения до 1024 символов).

title - определяет текст, выводимый в строке заголовка окна ввода. Параметр необязательный.

default - используется, если указывается начальное значение в поле редактирования окна ввода. Это значение пользователь может принимать, изменять, модернизировать

В функции InputBox задаются только предопределенные командные кнопки OK и Cancel.

Пример 4. Приведем следующий программный код

Sub

Title = "Имя"

Prompt = " Введите ваше имя"

Userinput = InputBox (prompt,title)

End Sub.

В результате выполнения данного кода формируется окно вида:

Рис.10

Задания для самостоятельной работы

  1. Создать диалоговое окно со значком запроса (задать константой), и кнопками Retry(Повтором) и Cancel(Отменой). Текст сообщения – “ Не удается найти диск A”

  2. Создать диалоговое окно, запрашивающее от пользователя подтверждения выхода из программы с кнопками Ok и Cancel.(Отменить)

  3. Создать диалоговое окно информационного характера (значок задать числом), Текст окна “Добро пожаловать в Excel!”с кнопкой Ok

  4. Создать диалоговое окно, запрашивающее у пользователя подтверждение (значок задать константой) о выходе из программы и создать две кнопки Yes(Да) и No(Нет).

  5. Создать диалоговое окно с критическим сообщением (значок задать числом) о том, что при загрузкеWindows произошла ошибка. Операцию можно Retry(Повторить), Abort(Отменить) или Ignore(Проигнорировать ошибку и продолжить работу).

  6. Создать диалоговое окно с помощью InputBox, запрашивающее от пользователя ввести пароль для входа в систему с кнопками Ok и Cancel(Отменить).

  7. Создать диалоговое окно с запросом (значок задать числом), надо ли очистить всё содержимое корзины. Варианты ответа –Yes(Да) и No(Нет).

  8. Создать диалоговое окно с критической ошибкой (значок задать константой) о невозможности закрытия программы. Операцию можно повторить или отменить.

  9. Создать диалоговое окно с помощью функции InputBox, запрашивающее от пользователя ввода его имени с кнопками Yes(Да) и Cancel(Отменить)

  10. Создать диалоговое окно, информационного характера (значок задать числом). В окне содержится информация о том, что вы успешно установили новый Windows с кнопкой Yes(Да)

Контрольные вопросы

  1. Назначение функции MsgBox.

  2. Ограничения на использование окон сообщения.

  3. Синтаксис функции MsgBox.

  4. Назначение функции MsgBox, возвращающей значение.

  5. Определение параметра options.

  6. Назначение функции InputBox