
- •Введение в vba для приложений ms office
- •1. Базовые элементы языка vba
- •1.1. Алфавит, словарь, идентификаторы
- •1.2. Типы данных
- •1.3. Переменные
- •1.4. Константы
- •1.5. Операции и операторы vba
- •1.6. Встроенные функции vba
- •1.7. Выражения
- •1.8. Приоритеты операций
- •1.9. Оператор присваивания
- •1.10. Структура программы
- •1.11. Правила оформления кода
- •2. Организация ввода – вывода данных
- •2.1. Окно сообщения. Стандартная процедура MsgBox
- •2.2. Окно ввода. Стандартная функция InputBox()
- •InputBox (сообщение [, заголовок] [, умолчание]
- •2.3. Ввод/вывод данных с/на рабочий лист Excel
- •3. Программирование линейных алгоритмов
- •4. Программирование разветвляющихся алгоритмов
- •4.1. Условный оператор If…Then
- •4.2. Условный оператор If…Then…Else
- •4.3. Условный оператор If…Then…ElseIf
- •4.4. Примеры использования оператора условного перехода If
- •5. Программирование циклических алгоритмов
- •5.1. Оператор цикла While…Wend
- •5.2. Оператор цикла For…Next
- •5.3. Табулирование функции
- •6. Литература
3. Программирование линейных алгоритмов
При программировании линейных алгоритмов могут быть использованы инструкции ввода и вывода данных, а также инструкции присваивания.
Пример 3.1.
Вычислить значение функции,
где x = 1-z и t = (x+1)2
Исходные и промежуточные данные, а также результаты вывести в окне сообщения.
Таблица соответствия переменных
-
Обозначение в задании
Имя переменной
Тип переменной
Комментарий
y
x
a
t
z
y
x
a
t
z
вещественный
вещественный
вещественный
вещественный
вещественный
Результат вычисления
Промежуточное данное
Исходное данное
Sub Pr3_1 ()
Dim y As Single, x As Single, a As Single
Dim t As Single, z As Single
a = InputBox("Введи значение а")
z = InputBox("Введи значение z")
x = 1 - z
t = (x + 1) ^ 2
y = x + Abs (a + 2 * t)
MsgBox "Исходные данные:" & Chr(13) & _
"a=" & a & " z=" & z & Chr(13) & _
"Промежуточные данные:" & Chr(13) & _
"x=" & x & " t=" & t & Chr(13) & _
"Результат:" & Chr(13) & "y=" & y, , "Пример"
End Sub
Поскольку при вычислении как промежуточных значений x и t, так и значения результата y нет никаких ограничений на значения используемых в расчетах данных, то для проверки алгоритма и программы достаточен один тест с любыми исходными значениями.
Тесты:
№ п/п |
Значение | ||||
a |
z |
x |
t |
y | |
1 2 3 |
1 2 -5 |
3 13 -8 |
-2 -12 9 |
1 121 100 |
1 232 204 |
Результаты работы программы с данными первого теста представлены на рис.3.2.
4. Программирование разветвляющихся алгоритмов
Для программирования разветвлений чаще всего используется оператор условного перехода (условный оператор) If. Он обеспечивает выполнение или невыполнение некоторого оператора, группы (блока) операторов в зависимости от заданного с помощью логического выражения некоторого условия.
В VBA существует несколько разновидностей условного оператора If:
Краткая форма условного оператора If … Then
Полная форма условного оператора If с одним условием If … Then … Else
Проверка множественных условий If … Then … ElseIf
4.1. Условный оператор If…Then
Используется для программирования краткой формы ветвления, т.е. позволяет выполнять один или несколько операторов, если логическое выражение в условии принимает значение True - Истина.
Можно использовать однострочный или блочный синтаксис.
Однострочный синтаксис:
If <условие> Then <оператор>
Например, следующие фрагменты графической схемы алгоритма программируются так:
If x>5 Then y=3*x+1.5
If c<=a+b*x-1.2 Then MsgBox “Значение С меньше”
Если необходимо выполнить не один, а несколько операторов в случае истинности логического выражения, то можно
расположить их в одну строку, разделив знаком двоеточие «:»;
использовать блочный синтаксис оператора If … Then .
Использование второго варианта предпочтительнее, т.к. он является более наглядным.
Блочный синтаксис:
If <условие> Then
<Блок операторов>
End If
Запрограммируем следующий фрагмент графической схемы алгоритма, используя однострочный и блочный синтаксис условного оператора If…Then:
If
A>10 Then x=A+1: y=B+2: Z=C+3
или If A>10 Then
x=A+1
y =B+2
z= C+3
End If