
- •Введение в 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. Литература
4.2. Условный оператор If…Then…Else
Используется для программирования полной формы ветвления. Если логическое выражение принимает значение True – Истина, выполняется один блок операторов, в противном случае (значение логического выражения False – Ложь) – второй. Можно использовать однострочный или блочный синтаксис.
Однострочный синтаксис:
If <условие> Then <оператор> Else <оператор>
Блочный синтаксис:
If <условие> Then
<Блок операторов>
Else
<Блок операторов>
End If
Запрограммируем следующие фрагменты графической схемы алгоритма:
If a
> 5 Then b = b + a Else b = b – a
или
If a > 5 Then
b = b + a
Else
b = b - a
End If
Первый вариант предпочтительнее.
If x>0 Then
y=x+1
f=1
Else
f=2
End if
или If x>0 Then y=x+1: f=1 Else f=2
Первый вариант предпочтительнее.
4.3. Условный оператор If…Then…ElseIf
Условный оператор может содержать другие условные операторы. В этом случае имеет место так называемое вложенное ветвление. Для его программирования могут использоваться операторы If … Then и If … Then … Else. Если первый блок ветки Else является вложенным ветвлением, то рациональнее использовать разновидность условного оператора If…Then…ElseIf.
Синтаксис:
if <условие_1> Then
<Блок операторов_1>
ElseIf <условие_2> Then
<Блок операторов_2>
ElseIf <условие_3> Then
<Блок операторов_3>
…
[Else
<Блок операторов>]
End If
Например:
If
g > 10 Then
z=5
ElseIf g<5 Then
z=1
End If
If
x > 5 Then
y = x + 2
f =1
ElseIf x < -10 Then
y = 2 * x
f=2
Else
y = x - 5
f=3
End If
Следующий фрагмент блок-схемы может быть запрограммирован только с помощью оператора If…Then…Else
4.4. Примеры использования оператора условного перехода If
Пример 4.1. Вычислить значение функции
y=
Результаты вычислений и номер формулы вывести в окне сообщений.
Таблица соответствия переменных
-
Обозначение
в задании
Имя
переменной
Тип
переменной
Комментарий
y
x
y
x
f
Вещественный
Вещественный
Целый
Значение функции
Исходное данное
Номер формулы
Анализ исходных данных:
Тесты:
№ теста |
Значение |
№ формулы |
Комментарий | |
x |
y | |||
1. 2. 3. |
1 10 15 |
0 9 31 |
2 2 1 |
x<10 x=10 x>10 |
Графическая схема алгоритма представлена на рис.4.1., результаты тестирования программы – на рис.4.2.
Sub Pr4_1()
Dim y As Single, x As Single
Dim f As Byte
'Ввод исходных данных
x= InputBox("Введи значение х")
'Выполнение расчетов и вывод результатов
If x > 10 Then y = 2 * x + 1: f = 1 Else y = x - 1: f = 2
MsgBox "При х=" & x & Chr(13) & _
"Значение y =" & y & Chr(13) & _
"Номер формулы вычисления - " & f, , "Пример"
EndSub
Пример 4.2. Проанализировать результаты сдачи учащимися экзаменов по физике, математике и русскому языку. Вывести сообщения:
если средний балл >4 – “отлично”
3<= ср. балл <=4 – “удовлетворительно”
средний балл <3 – “плохо”
Результат анализа вывести в окне сообщения.
Таблица соответствия переменных
Обозначение в задании |
Имя переменной |
Тип переменной |
Комментарий |
Оценка по физике Оценка по математике Оценка по русскому языку Средний балл |
fiz mat rus Sr S P |
целый целый целый вещественный строковый Integer Int |
Исходное данное Исходное данное Исходное данное Промежуточное значение Сообщение Рабочая переменная для вывода информационного значкая в окне сообщения |
Анализ исходных данных:
-
Имя
переменной
Недопустимые
значения
Ситуация, при которой переменная получает недопустимое значение
fiz, mat, rus
<1 или>5
ввод данных
Анализ
значений переменнойSr:
№ теста |
Значение |
Комментарий | |||||
fiz |
mat |
rus |
Sr | ||||
1. 2. 3. 4. 5. 6. 7. 8. |
0 5 3 5 4 3 3 3 |
5 6 4 4 4 4 3 2 |
4 5 -1 5 4 4 3 3 |
4,7 4,0 3,7 3 2,7 |
Введено некорректное значение Введено некорректное значение Введено некорректное значение Отлично Удовлетворительно Удовлетворительно Удовлетворительно Плохо |
Sub Pr4_2()
Dim fiz As Byte, mat As Byte, rus As Byte
Dim Sr As Single, S As String, P As Integer
'Ввод и проверка исходных данных
fiz = InputBox("Введи оценку по физике")
mat = InputBox("Введи оценку по математике")
rus = InputBox("Введи оценку по русскому языку")
If (fiz < 1 Or fiz > 5) Or (mat < 1 Or mat > 5) Or (rus < 1 Or rus > 5) Then
MsgBox "Введено некорректное значение" & Chr(13) & _
"оценка по физике - " & fiz & Chr(13) & _
"оценка по математике - " & mat & Chr(13) & _
"оценка по русскому языку - " & rus
Else
'Выполнение расчетов
Sr = (fiz + mat + rus) / 3
If Sr > 4 Then ' P – значение константы для вывода
S = "Отлично": P = vbExclamation ' информ. значка в окне
ElseIf Sr < 3 Then ' сообщения
S = "Плохо": P = vbCritical
Else
S = "Удовлетворительно": P = vbQuestion
End If
'Вывод результатов. Для вывода среднего значения используется формат
MsgBox S & Chr(10) & "Средний балл = " & Sr & _
Chr(13) & "Оценка по физике - " & fiz & _
Chr(13) & "Оценка по математике - " & mat & _
Chr(13) & "Оценка по русскому языку - " & rus, P
End If
End Sub