Синтаксис оператора Select Case
Select Case <выражение>
Case <список выражений 1>
<операторы 1>
…………..
Case <список выражений N>
<операторы N>
[Case Else
<операторы N+1>]
End Select
Здесь
<выражение> - любое численное или строковое выражение,
<список выражений i> - представляют список выражений, отделенных друг от друга запятыми или (если в интервале), то in to ik,
<операторы i>- (i=1,N) – операторы, которые выполняются, если <выражение i> совпадает с любым компонентом <список выражений i>,
[Case Else
<операторы N+1>] необязательная конструкция.
Работа:
· Вычисляется <выражение>
· Если значение <выражение> совпадает со значением из Case <список выражений i>, то выполняются соответствующие <операторы i> и затем управление передается на оператор следующий за оператором Select Case
· Если значение <выражение> не совпадает ни с одним из Case <список выражений i>, то при наличии конструкции Case Else выполняются <операторы N+1>. Если конструкция Case Else отсутствует, то сразу выполняется оператор, следующий за оператором Select Case
Пример:
Ввести номер дня недели и по его значению вывести какой это день недели: Рабочий день, Суббота или Воскресенье.
Public Sub Оператор_Select_Case1()
Dim n_day As Integer
Dim day As String
n_day = CInt(InputBox("Введите номер дня недели"))
Select Case n_day
Case 1 To 5
day = "Рабочий день"
MsgBox "Сегодня - " & day, vbOKOnly + vbInformation
Case 6
day = "Суббота"
MsgBox "Сегодня - " & day, vbOKOnly + vbInformation
Case 7
day = "Воскресенье"
MsgBox "Сегодня - " & day, vbOKOnly + vbInformation
End Select
End Sub
Public Sub Оператор_Select_Case2()
Dim n_day As Integer
Dim day As String
n_day = CInt(InputBox("Введите номер дня недели"))
Select Case n_day
Case 6
day = "Суббота"
MsgBox "Сегодня - " & day, vbOKOnly + vbInformation
Case 7
day = "Воскресенье"
MsgBox "Сегодня - " & day, vbOKOnly + vbInformation
Case Else
day = "Рабочий день"
MsgBox "Сегодня - " & day, vbOKOnly + vbInformation
End Select
End Sub
Операторы повтора
Для организации циклов язык VBA предоставляет несколько гибких и мощных структур – операторы повтора.
А) Оператор цикла с параметром ( For — Next)
Оператор цикла позволяет повторять группу операторов заданное число раз
Синтаксис:
For <счетчик цикла>=<начало> To <конец> [Step шаг]
<операторы>
[Exit For]
Next <счетчик цикла>
Где:
· <счетчик цикла> -любая числовая переменная, в которой сохраняется информация о количестве выполненных проходов цикла (счетчик цикла);
· Параметры <начало> и <конец> -это числовые выражения, задающие начальное и конечное значение счетчика и определяющие количество проходов цикла.
· Числовая переменная шаг задает приращение, на которое увеличивается счетчик цикла при каждом проходе. [Step шаг]необязательная фраза. При её отсутствии VBA (по умолчанию) увеличивает счетчик циклана единицу.
· Во фразе Next <счетчик цикла>имя переменной счетчикуказывать необязательно. Но при указании имени переменной улучшается читабельность программы и в случае вложенных циклов For — Next сразу видно, какому именно циклу принадлежит данное слово Next
Работа:
· Переменной <счетчик цикла> присваивается значение параметра <начало> и проверяется условие счетчик цикла < конец. Если условие неверно, то управление передается оператору, следующему за Next. Если же условие - верно, то выполняются все операторы, входящие в блок, обозначенный как <операторы>, вплоть до ключевого слова Next
· Значение переменной <счетчик цикла>увеличивается на величину, заданную во фразе [Step шаг]или на единицу, если фраза Stepне указана
· Управление возвращается
· Данный процесс будет выполняться, пока значение <счетчик цикла> не достигнет значение <конец>
· Досрочно завершить цикл For — Next можно с помощью оператора Exit For,который располагается в том месте блока <операторы>, где необходимо выйти из оператора цикла For — Next не дожидаясь условия завершения цикла.
На блок – схеме оператор изображается следующим образом:
Пример 1
Вычислить n-ый член последовательности, заданный формулой , если
Public Sub Prog1()
Dim n As Byte
Dim a1 As Integer, a2 As Integer, an As Integer
n = CByte(InputBox("введите N"))
a1 = 1: a2 = 1
For i = 3 To n
an = a2 + a1
a1 = a2: a2 = an
Next i
MsgBox n & "-й член последовательности = " & an
End Sub
Пример 2
Задана последовательность хiвещественных чисел. Вычислить
Public Sub Prog2()
Dim n As Byte
Dim i As Byte
Dim xi As Double, s As Double
n = CByte(InputBox("введите N"))
s = 0
For i = 1 To n
xi= CDbl(InputBox("Введите " & i & "-й элемент последовательности"))
s = s + xi
Next i
Worksheets(1).Range("a1") = "Значение суммы равно"
Worksheets(1).Cells(2, 1) = s
End Sub
В) Операторы повтора
Инструкция For…Next применяется в тех случаях, когда известно число повторений.
Если число повторений неизвестно, то применяются операторы повтора.