Смекни!
smekni.com

Основы программирования в среде Visual Basic for Application VBA (стр. 10 из 21)

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

Рассмотрим пример использования окон сообщений. В результате действия приведенной ниже процедуры CommandButton1_Click() появится диалоговое окно Пример окна ввода с полем ввода (рис. 5.1). Следуя приглашению в этом диалоговом окне, введем в поле ввода имя, например, Николай Маркович. Нажмем кнопку ОК. На экране отобразится диалоговое окно пример окна сообщения с текстом приветствия (рис. 5.2). Если пользователь не введет имя в поле ввода диалогового окна Пример окна ввода или нажмет кнопку Отмена, то компьютер выразит свое неудовлетворение действиями пользователя отображением диалогового окна Еще один пример окна сообщения (рис. 5.3).

Рисунок 5.1

Рисунок 5.2

Рисунок 5.3

Private Sub CommandButton1_Click()

' Описание переменной

Dim Name As String

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

Name = InputBox("Введите свое имя", "Пример окна ввода")

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

If Name <> "" Then

Response = MsgBox("Здравствуйте, " + Name, vbInformation, " ")

Else

Response = MsgBox("Вы забыли ввести свое имя! ", vbExclamation, "Еще один пример окна сообщения")

End If

End Sub

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

Константа Значение Отображаются кнопки
vbOKOnly 0
vbOKCancel 1
vbAbortRetryIgnore 2
vbYesNoCancel 3
vbYesNo 4
vbRetryCancel 5

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

Константа Значение Отображаются кнопки
vbCritical 16
vbQuestion 32
vbExclamation 48
vbInformation 64

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


Константа Значение Номер основной кнопки
vbDefaultButton1 0 1
vbDefaultButton2 256 2
vbDefaultButton3 512 3
vbDefaultButton4 768 4

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

Константа Значение Нажатая кнопка
vbOK I OK
vbCancel 2 Отмена (Cancel)
vbAbort 3 Прервать (Abort)
vbRetry 4 Повторить (Retry)
vblgnore 5 Пропустить (Ignore)
vbYes 6 Да (Yes)
vbNo 7 Нет (No)

6. Реализация разветвляющихся алгоритмов в VBA

Операторы перехода и выбора

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

Перечислим операторы перехода и выбора VBA.

Оператор безусловного перехода. Формат:

GoTo Строка

Задает безусловный переход на указанную строку внутри процедуры. Обязательный аргумент Строка может быть любой меткой строки или номером строки

Оператор условного перехода. Формат:

If <Условие> Then <Операторы 1> [Else Операторы 2]

Если Условие принимает значение True (истина), то выполняются операторы после Then, иначе выполняются операторы после Else. Ветвь Else может отсутствовать.

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

If <Условие> Then

[Операторы 1]

[Elself <Условие-n> Then

[Операторы n]

[Else

[Операторы]]

End If

Оператор выбора. Формат:

Select Case <выражение>

[Case списокВыражений-1

[операторы-1]]

[Case списокВыражений-n

[операторы-n]]

[Case Else

[операторы_еlse]]

End Select

Операторы-n (необязательная часть) – один или несколько операторов, выполняемых в том случае, если выражение совпадает с любым компонентом списка список-Выражений-n.

Операторы_else (необязательная часть) – один или несколько операторов, выполняемых в том случае, если выражение не совпадает ни с одним из предложений Case.

Активизация подпрограммы обработки ошибок.

Оператор On Error GoTo строка активизирует подпрограмму обработки ошибок, начало которой определяется обязательным аргументом строка, значением которого может быть любая метка строки или номер строки. Для того чтобы предотвратить выполнение программы обработки ошибок в тех случаях, когда ошибка не возникла, необходимо помещать соответствующую инструкцию Exit Sub, Exit Function или Exit Property сразу после подпрограммы обработки ошибки, как в следующем примере:

Sub InitializeMatrix(Varl, Var2, Var3, Var4)

On Error GoTo M1

Exit Sub

M1:

Resume Next

End Sub

В этом примере программа обработки ошибок помещена между операторами Exit Sub и End Sub, что позволяет отделить ее от части программы, соответствующей нормальному ходу выполнения.

On Error Resume Next указывает, что при возникновении ошибки происходит передача управления на инструкцию, непосредственно следующую за инструкцией, вызвавшей ошибку.

On Error GoTo 0 отключает любой активизированный обработчик ошибок в текущей процедуре


7. Операторы цикла

Они позволяют организовать в программе повторение некоторых действий (как правило, с различными значениями параметров цикла).

В VBA имеются следующие операторы цикла

For – Next. Формат:

For <Счетчик> = <Начало> То <Конец> [Step <Шаг>] [Операторы 1]

[Exit For]

[Операторы 2] Next [<Счетчик>]

Цикл со счетчиком повторяет выполнение группы Операторов 1, пока Счетчик изменяется от Начального значения до Конечного с указанным Шагом. Если шаг не указан, то он полагается равным 1. Досрочный способ выхода из цикла предоставляет оператор Exit For.

For Each – Next. Формат:

For Each <Элемент> In <Группа>

[Операторы 1]

[Exit For]

[Операторы 2]

Next [<Элемент>]

Цикл повторяет выполнение группы Операторов 1 для каждого элемента массива или семейства.

Do Until – Loop. Формат:

Do [Until <Условие>]

[Операторы 1]

[Exit Do]

[Операторы 2] Loop

Тело цикла выполняется, пока Условие имеет значение False. Операторы 1 выполняются по крайней мере один раз, а затем проверяется условие. Досрочный способ выхода из цикла – Exit Do.

Do – Loop While. Формат:

Do

[Операторы 1]

[Exit Do]

[Операторы] Loop [While <Условие>]

Повторяет выполнение набора операторов, пока Условие имеет значение True. Сначала выполняются Операторы 1, а потом проверяется условие.

Do While – Loop. Формат:

Do [While <Условие>]

[Операторы 1]

[Exit Do]

[Операторы 2]

Loop

Цикл с «предусловием» проверяет Условие перед выполнением Операторов 1. Когда Условие становится ложным, цикл прекращает свое выполнение.

Do – Loop Until. Формат:

Do

[Операторы 1]

[Exit Do]

[Операторы 2]

Loop [Until <Условие>]

Повторяет выполнение набора инструкций, пока условие не примет значение True. Сначала выполняется инструкция, а потом проверяется условие.

While – Wend. Формат:

While <Условие>

[Операторы]

Wend

Выполняет последовательность инструкций, пока заданное условие имеет значение True.

8. Массивы

Как и в других языках программирования, в VBA можно использовать массивы. Примеры объявления массивов:

Dim M(3,3) As Single

Dim V(12) As Integer

Первая строка объявляет двумерный массив 3´3 (матрицу), состоящий из действительных чисел. Вторая строка объявляет одномерный массив (вектор) из 12 целых чисел, причем по умолчанию первый элемент массива будет V(0), а последний V(11). В этом случае говорят, что 0 – базовый индекс. Можно изменить базовый индекс, написав в начале листа модуля инструкцию Option Base 1. После этого индексы массивов M и V будут начинаться с единицы. Другим способом изменения базового индекса является использование ключевого слова Tо при объявлении массива: