- •Основы vba
- •Алфавит языкаVba
- •Имя переменной
- •Объявление переменных
- •Оператор описания переменных
- •Dim a As Integer
- •Знаки операций
- •Математические функции
- •Оператор присваивания
- •Ввод данных
- •Оператор вывода
- •Линейный процесс
- •Программный код
- •Оператор условного перехода
- •Операторы цикла
- •Оператор цикла с параметромFor–Next
- •Оператор выбораSelectCase
- •Начисление комиссионных
- •Оператор цикла с предусловием While – Wend
- •Оператор цикла Do – Loop
- •Массивы
- •Вывод массива
- •Вычисление суммы, произведения и количества элементов в одномерном массиве
- •Вычисление минимального и максимального элементов в одномерных массивах
- •Двумерные массивы
- •Ввод двумерного массива
- •Вывод двумерного массива
- •Формирование матрицы
- •Вычисление суммы, произведения, количества, минимума и максимума в двумерных массивах
- •Подпрограммы
- •Подпрограмма-процедура
- •Локальные и глобальные параметры (переменные)
- •Формальные и фактические параметры
- •Параметры, передающиеся по значению
- •Подпрограмма-функция
Оператор выбораSelectCase
Оператор выбора SelectCaseудобно использовать, когда в зависимости от значения некоторого выражения, имеющего конечное множество допустимых значений, необходимо выполнить разные действия.
Select CaseТестируемое выражение
CaseУсловие выбора 1
Блок операторов 1
CaseУсловие выбора 2
Блок операторов 2
……………
CaseУсловие выбораn
Блок операторов n
Case Else
Блок операторов
End Select
После каждого оператора Caseможет находиться произвольное количество других операторов, и все они будут выполняться, если условие оператораCaseистинно.
Задача. Вычислить размер комиссионных в зависимости от объема продаж. Процент комиссионных приведен в табл. 17.
Таблица 17
Начисление комиссионных
Объем продаж, тыс. руб. |
Комиссионные, % |
От 0 до 9999 |
8 |
От 10000 до 39999 |
10 |
40000 и более |
14 |
Программный код
Option Explicit
Sub PR6()
Dim opr As Double, 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допустимо использовать составные условия, подобно тому, как это делается в условном операторе.
Пример
Case5, 6, 9to10, 13, 14,Is>=16
В этом операторе проверяется, принадлежит ли тестируемое выражение отрезку от 9 до 10, или равняется одному из значений: 5, 6, 13, 14, или оно не меньше 16.
Оператор цикла с предусловием 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, 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)
EndSub
Задача 3. Вкладчик положил на счет 1000 рублей. Через сколько дней вклад достигнет 20000 рублей, если начисляемый процент 0,6 % в день.
Программный код
Option Explicit
Sub PR11()
Dim V As Double, Pr As Double, 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