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

Синтаксис:

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

Аргументы:

¾ prompt — Обязательный параметр. Строковое выражение, отображаемое как сообщение в диалоговом окне

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

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

Таблица 11 – Значение констант, определяющее тип и число кнопок, тип значка

Имя Константы Числовое значение Отображаются кнопки
VbOkOnly Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru
VbOkCancel Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru
VbAbortRetryIgnore Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru
VbYesNoCancel Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru
VbYesNo Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru
VbRetryCancel Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru
VbCritical Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru
VbQuestion Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru
VbExclamation Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru
VbInformation Устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. - student2.ru
VbDefaultButtob1 Первая кнопка по умолчанию
VbDefaultButtob2 Вторая кнопка по умолчанию
VbDefaultButtob3 Третья кнопка по умолчанию
VbDefaultButtob4 Четвертая кнопка по умолчанию
VbSystemModal Режим модальности: все программы приостанавливаются до тех пор, пока пользователь не ответит на сообщение

Значения 0-5 параметра кнопки могут быть просуммированы со значениями 16-64 и 256-4096. В этом случае первые значения определяют состав кнопок диалогового окна, вторы – вид отображаемого в окне значка, а третьи – выбор кнопки по умолчанию.

Например, если в качестве значения параметра указать выражение 3+64+512, то в диалоговом окне будут отображены кнопки Да, Нет, Отмена, значок информирующего значения и по умолчанию будет выбрана кнопка Отмена.

Public Sub qq()

MsgBox "Нажмите любую кнопку", _

vbYesNoCancel + vbInformation + vbDefaultButton3, _

"Контрольный пример"

MsgBox "Нажмите любую кнопку", _

3 + 64 + 512, _

"Контрольный пример"

MsgBox "Нажмите любую кнопку", _

579, _

"Контрольный пример"

End Sub

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

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

Таблица 12

Константа Значение Нажатая кнопка
vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo ОК Отмена (Cancel) Прервать (Abort) Повторить (Retry) Пропустить (Ignore) Да (Yes) Нет (No)

Пример.

Public Sub TestMsgBox1()

x = 2

n = MsgBox("Значение переменной Х=" & x & Chr(10) _

& "Продолжитьвычисления ?", vbYesNo, "Пример окна MsgBox")

If n = 6 Then

MsgBox "Нажата кнопка Да"

ElseIf n = 7 Then

MsgBox "Нажата кнопка Нет"

End If

End Sub

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

Пользователь может нажать одну из кнопок – Да или Нет. Если будет нажата кнопка Да, переменной N будет присвоено значение 6 , если будет нажата кнопка Нет – 7. Проанализировав в дальнейшем это значение, можно выбрать одну из ветвей выполнения программы.

Часто процедура MsgBox используется в «минимальном» варианте - только для вывода сообщения, с одной кнопкой – OK. В этом случае аргументы не берутся в скобки.

Например:

MsgBox “Значение переменной Х=” & X

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

Пример окна сообщений

ПРИМЕР:

1. Пример использования окон сообщений. В результате действия приведенной ниже процедуры Тестокон появится диалоговое окно пример окна ввода с полем ввода

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

Следуя приглашению в этом диалоговом окне, введем в поле ввода имя, например Андрей. Нажмем кнопку ОК.

На экране отобразится диалоговое окно пример окна сообщения с текстом приветствия

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

Если пользователь не введет имя в поле ввода диалогового окна Пример окна ввода или нажмет кнопку Отмена, то компьютер выразит свое неудовлетворение действиями пользователя отображением диалогового окна

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

Public Sub ТестОкон()

Dim ИмяКлиента As String

'

' Ввод имени пользователя

'

ИмяКлиента = InputBox("Введите ваше имя", "Пример окна ввода")

' Реакция программы на ввод имени пользователя

If ИмяКлиента <> "" Then

MsgBox "Привет, " & ИмяКлиента, vbInformation, _

"Пример окна сообщения"

Else

MsgBox "Невежа, ты забыл ввести свое имя ", _

vbExclamation, "Еще один пример окна сообщения"

End If

End Sub

Условные операторы

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

Условный оператор позволяет выбирать и выполнять действия в зависимости от истинности некоторого условия.

Имеется два варианта синтаксиса:

1) Строчная форма записи условного оператора:

IF <условное выражение>Then <операторы1> [Else <операторы2>]

Работа:

Если <условное выражение>принимает значение True, то выполняются <операторы1>после Then и управление передается оператору, следующему за условным оператором. Если <условное выражение>=False, то выполняются <операторы2> после Else и управление передается оператору, следующему за условным оператором. Ветвь Else является необязательной

2) Блочная форма записи оператора IF (оператор расположен на нескольких строках ):

IF < условное выражение 1>Then

<операторы 1>

[ElseIf < условное выражение–n>Then

[<операторы-n>]…

[Else

[<ИначеОператоры>]

End If

Работа:

Если <условное выражение1>принимает значение True, то выполняются <операторы 1> после Then, и управление передается оператору, следующему за условным оператором. Если <условное выражение1>=False, то при наличии конструкции [ElseIf < условное выражение–n>проверяется значение < условное выражение–n>. Если оно имеет значениеTrue, то выполняются[<операторы-n>]…и управление передается оператору, следующему за условным, в противном случае выполняются операторы [<ИначеОператоры>]после Else. Ветвь Else является необязательной.

На блок-схеме условные операторы отображаются следующим образом:

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

Пример 1

Вычислить, является ли введенное число четным

Public Sub Четное_число()

Dim s As Integer

s = Worksheets(1).Range("a1")

's = Worksheets("Лист1").Range("a1")

's = Worksheets(1).Cells(1, 1)

's = CInt(InputBox("Введите любое целое число"))

If s Mod 2 = 0 Then

Worksheets(1).Range("a2") = "Введенное число " & s & " является четным"

'MsgBox "Введенное число " & s & " является четным"

Else

Worksheets(1).Range("a2") = "Введенное число " & s & " является нечетным"

'MsgBox "Введенное число " & s & " является нечетным"

End If

End Sub

Пример 2

Вычислить

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

Public Sub aa()

Dim a As Double, f As Double

Dim i As Integer

a = Worksheets(2).Range("b1")

i = Worksheets(2).Range("b2")

If i Mod 2 = 0 And a > 0 Then

f = i * Sqr(a)

ElseIf i Mod 2 <> 0 And a < 0 Then

f = 0.5 * i * Sqr(Abs(a))

Else

f = Sqr(Abs(i * a))

End If

Worksheets(2).Range("a3") = "Результат"

Worksheets(2).Range("a4") = "f="

Worksheets(2).Range("b4") = f

End Sub

Пример 3 Вложенные операторы If

Public Sub Возраст1()

intВозраст = InputBox("Укажите возраст")

If intВозраст > 7 Then

If intВозраст <= 17 Then

MsgBox ("Школьник")

Else

MsgBox "Взрослый"

End If

Else

MsgBox "Дошкольник"

End If

End Sub

Пример 4 Эквивалентом вложенных операторов операторов If является оператор If …Then … ElseIf, в котором используется ключевое слово ElseIf

Public Sub Возраст2()

intВозраст = InputBox("Укажите возраст")

If intВозраст < 7 Then

MsgBox "Дошкольник"

ElseIf intВозраст <= 17 Then

MsgBox ("Школьник")

ElseIf intВозраст <= 23 Then

MsgBox ("Студент")

ElseIf intВозраст <= 55 Then

MsgBox ("Специалист")

Else

MsgBox "Пенсионер"

End If

End Sub

Что получим, если ничего не введем ?

11.3 Оператор безусловного перехода GoTo

Оператор безусловного перехода GoToвсегда изменяет порядок выполнения операторов в программе – при этом VBA не проверяет никаких условий, а просто переходит к выполнению программы с того места, которое будет указано в этом операторе.

Синтаксис оператора:

GoTo Labl

Здесь Labl – метка, определяющая оператор (или группу операторов), с которого будет продолжено выполнение программы. Метка – это любой допустимый идентификатор VBA, за которым обязательно должно следовать двоеточие.

Public Sub Опер_GoTo()

Пароль = InputBox("Введите Ваш пароль")

If Пароль <> "ABC" Then GoTo Неверный_пароль

MsgBox ("Добро пожаловать, ABC!")

'Другие операторы

Exit Sub

Неверный_пароль:

MsgBox "Вы не можете работать на этой машине"

End Sub

В этой процедуре оператор GoToиспользуется для перехода в особую ветвь программы, предназначенную для обработки ситуации, когда пользователь вводит неверный пароль. Если же пароль будет введен верно (“ABC”), то после вывода приветствия программа представит пользователю доступ к машине для продолжения работы.

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

11.4 Условный оператор Select Case

Кроме рассмотренных ранее условных операторов If в языке VBA имеется еще один условный оператор Select Case, который используется в тех случаях, когда необходимо проверять одно и то же значение, сравнивая его с различными выражениями.

Наши рекомендации