Оператор выбора Select Case
Оператор выбора Select Case удобно использовать, когда в зависимости от значения некоторого выражения, имеющего конечное множество допустимых значений, необходимо выполнить разные действия.
Select Case Тестируемое выражение
Case Условие выбора 1
Блок операторов 1
……………
Case Условие выбора n
Блок операторов n
Case Else
Блок операторов
End Select
После каждого оператора Case может находиться произвольное количество других операторов, и все они будут выполняться, если условие оператора Case истинно.
Пример
Рассмотрим пример начисления комиссионных на основе оператора выбора Select Case. В этом примере размер комиссионных зависит только от объема проданной продукции по правилу, приведенному в табл. 7.
Таблица 7
Объем продаж, тыс. руб. | Комиссионные, % |
От 0 до 9999 | |
От 10000 до 39999 | |
40000 и более |
Программный код
Option Explicit
Sub PR6()
Dim opr As Double
Dim prem As Double
opr = Val(InputBox("Введите объем продаж"))
Select Case opr
Case 0 To 9999
prem = 0.08 * opr
Case 10000 To 39999
prem = 0.1 * opr
Case Is >= 40000
prem = 0.14 * opr
End Select
MsgBox ("Комиссионные=" & prem)
End Sub
Слово Is, используемое в программе, является ключевым словом VBA, обозначающим тестируемое выражение в операторе Case.
В операторе Case допустимо использовать составные условия, подобно тому, как это делается в условном операторе.
Пример
Case 5, 6, 9 to 10, 13, 14, Is>=16
В этом операторе проверяется, принадлежит ли тестируемое выражение отрезку от 9 до 10 или равняется одному из значений: 5, 6, 13, 14, или оно не меньше 16.
Операторы цикла
Циклический процесс – это процесс, в котором один оператор или группа операторов выполняются многократно при различных значениях аргумента.
Оператор цикла с параметром For – Next
Оператор цикла For – Nextиспользуется, когда заранее известно, сколько раз должно повториться тело цикла.
Общий вид оператора цикла с параметром выглядит следующим образом:
For Счетчик = Начальное значение To Конечное значение Step Шаг
Блок операторов
Next Счетчик
Цикл For – Next обеспечивает выполнение блока операторов (тела цикла) n раз при последовательном изменении счетчика от начального до конечного значения с указанным шагом изменения.
.
Если Step Шаг в конструкции отсутствует, то по умолчанию считается, что шаг равен 1.
Пример 1
Задано натуральное число n. Вычислить n! (факториал n).
Напомним, что n! = 1×2×3×4×…×n.
Например, 5! = 1×2×3×4×5 = 120.
Программный код
Option Explicit
Sub PR7()
Dim n As Integer
Dim F As Double
Dim i As Integer
n = Val(InputBox("Введите n"))
F = 1
For i = 1 To n
F = F * i
Next i
MsgBox ("Факториал числа " & n & "=" & F)
End Sub
Пример 2
Вычислить y=sin0.1+sin0.2+sin0.3+…+sin10
Программный код
Option Explicit
Sub PR8()
Dim x As Double, y As Double, summa As Double
summa = 0
For x = 0.1 To 10 Step 0.1
summa = summa + Sin(x)
Next x
MsgBox ("Сумма=" & summa)
End Sub
Оператор цикла While – Wend
Оператор цикла While – Wend используется для организации цикла с неизвестным заранее числом повторений тела цикла. Общий вид цикла While – Wendвыглядит следующим образом:
While Условие
Блок операторов
Wend
Цикл While – Wend обеспечивает многократное выполнение блока операторов, пока условие принимает значение True (истина).
Пример 1
Вычислить и вывести значения функции Y при X изменяющемся от –10 до 10 с шагом 2.
Программный код
Option Explicit
Sub PR9()
Dim X As Integer
Dim Y As Double
X = –10
While X <= 10
If X <> 2 Then
Y = 1 / (X – 2) + X
MsgBox ("Y=" & Y)
Else
MsgBox ("функция не определена")
End If
X = X + 2
Wend
End Sub
Пример 2
Задан натуральный ряд чисел. Вычислить сумму четных чисел данного ряда.
Программный код
Option Explicit
Sub PR10()
Dim N As Integer, I As Integer, S As Double
N = Val(InputBox("Введите N"))
I = 2 : S = 0
While I <= N
S = S + I
I = I + 2
Wend
MsgBox (S)
End Sub
Пример 3
Вкладчик положил на счет 1000 рублей. Через сколько дней вклад достигнет 20000 рублей, если начисляемый процент 0,6 % в день.
Ответ: 500 дней.
Программный код
Option Explicit
Sub PR11()
Dim V As Double
Dim Pr As Double
Dim Kol As Integer
V = Val(InputBox("Введите начальный взнос"))
Kol = 0
While V <= 20000
Pr = V * 0.6 / 100
V = V + Pr
Kol = Kol + 1
Wend
MsgBox ("20000 руб. вклад достигнет за " & Kol & " дней")
End Sub