
- •266Лекция 13. Язык программирования Visual Basic for Application (vba)
- •Лекция 13. Язык программирования Visual Basic for Application (vba)
- •Типы данных
- •Инструкции vba
- •Имена vba
- •Процедуры vba
- •Подпрограмма Sub
- •Функция Function
- •Функции ввода-вывода данных и сообщений
- •Функция MsgBox
- •Функция InputBox
- •Управляющие конструкции vba
- •Проверка условия — If
- •Select Case
- •For Next
- •While…Wend
- •Do …Loop
- •Функции пользователя
- •Макросы Microsoft Office
- •Макросы Word
- •Макросы Excel
- •Макросы Access
- •Контрольные вопросы
Select Case
Последовательная проверка условий для выбора альтернативы:
Select Case выражение
Case список_выражений1
<блок_инструкций1>
Case список выражений 2
<блок_инструкций2>
. . . . .
Case Else
<блок_инструкций_Else >
End Select
Проверяемое выражение может возвращать значение любого типа (логическое, числовое, строковое). Список выражений – одно или несколько выражений, разделенных стандартным разделителем – символ точка с запятой (;).
Элементы списка выражений могут задаваться как:
выражение
выражение1 To выражение2
Is логический_оператор(сравнение_выражения)
Пример 10
Для выбора алгоритма расчета sale выполнить проверку значения taxnalog.
Фрагмент программного кода:
taxnalog = InputBox("Введите ставку налога")
summ1 = InputBox("Укажите сумму")
Select Case taxnalog
Case Is < 0.12
sale = summ1 * (1 + taxnalog)
Case Is < 0.25
sale = (summ1 - 200) * (1 + taxnalog)
Case Is < 0.35
sale = (summ1 - 500) * (1 + taxnalog)
Case Else
sale = (summ1 - 1000) * (1 + taxnalog)
End Select
MsgBox sale
GoTo
Инструкция обеспечивает принудительный переход к оператору, помеченному указанной меткой.
Метка — строка символов, которая указывается перед другой инструкцией программного кода, отделяется символом двоеточие (:). Количество меток не ограничено, имя метки должно быть уникально на уровне процедуры, например:
GoTo метка
Пример 11
Повторить ввод ставки налога и исходной суммы, если результат расчета суммы налога неудовлетворительный.
Фрагмент программного кода:
Met1: taxnalog = InputBox("Ставка налога - ",, 0.2)
summ1 = InputBox("Исходная сумма - ", , 2000)
If MsgBox("Сумма налога - " & taxnalog * summ1 & _ vbCrLf & "Выход-OK,повтор-Cancel", vbOKCancel, _ "Результат расчета суммы налога")=2 Then GoTo Met1
For Next
Инструкция For…Next организует циклическое выполнение группы инструкций под названием тела цикла. Для принудительного выхода из цикла используется инструкция Exit For. Имеются две разновидности.
Вариант 1. Последовательное изменение значений переменной цикла (счетчика) от начального (начало) до конечного (конец) значения с заданным шагом:
For счетчик = начало To конец [Step шаг]
тело цикла (инструкции)
Next [счетчик]
Вариант 2. Организация повторения цикла для каждого элемента массива или коллекции объектов. Заранее указывать число элементов не требуется, разрешается использование вложенных циклов.
For Each <элемент> In <группа>
тело цикла (инструкции)
Next [элемент]
элемент — переменная, используемая для ссылки на элементы коллекции однородных объектов (семейства);
группа — имя коллекции (семейства) объектов.
Пример 12
Ввод начального значения, шага изменения и конечного значения ставки налога и суммы налогообложения. Вычислить суммы налога.
Фрагмент программного кода:
taxnalog = InputBox("Введите начальную " & _
"ставку налога", , 0.2)
stepnalog = InputBox("Введите шаг ставки " & _
"налога — не более 0,2", , 0.15)
maxtaxnalog = InputBox("Введите конечную " & _
"ставку налога не более 0,5", , 0.5)
summ1 = InputBox("Укажите начальную сумму " & _
"не более 1000", , 1000)
stepsumm = InputBox("Укажите шаг суммы " & _
"не менее 100", , 200)
maxsumm1 = InputBox("Укажите конечную сумму " & _
"не более 10000", , 2000)
For I = taxnalog To maxtaxnalog Step stepnalog
For j = summ1 To maxsumm1 Step stepsumm
sale = j * (1 + I)
MsgBox " Сумма налога при ставке " & _
I & "для суммы " & j & " равна " & sale
Next j
Next I