
- •Основы vba
- •Алфавит языкаVba
- •Имя переменной
- •Объявление переменных
- •Оператор описания переменных
- •Dim a As Integer
- •Знаки операций
- •Математические функции
- •Оператор присваивания
- •Ввод данных
- •Оператор вывода
- •Линейный процесс
- •Программный код
- •Оператор условного перехода
- •Операторы цикла
- •Оператор цикла с параметромFor–Next
- •Оператор выбораSelectCase
- •Начисление комиссионных
- •Оператор цикла с предусловием While – Wend
- •Оператор цикла Do – Loop
- •Массивы
- •Вывод массива
- •Вычисление суммы, произведения и количества элементов в одномерном массиве
- •Вычисление минимального и максимального элементов в одномерных массивах
- •Двумерные массивы
- •Ввод двумерного массива
- •Вывод двумерного массива
- •Формирование матрицы
- •Вычисление суммы, произведения, количества, минимума и максимума в двумерных массивах
- •Подпрограммы
- •Подпрограмма-процедура
- •Локальные и глобальные параметры (переменные)
- •Формальные и фактические параметры
- •Параметры, передающиеся по значению
- •Подпрограмма-функция
Оператор цикла Do – Loop
В VBAдля организации циклов с неизвестным заранее числом повторений тела цикла используется и оператор циклаDo – Loop.
Существует четыре формы записи этого оператора. Их можно разбить на две группы: циклы с предусловием и циклы с постусловием.
Циклы с предусловием.
1. Do While Условие 2. Do Until Условие
Блок операторов Блок операторов
Loop Loop
Циклы с постусловием.
Do 2.Do
Блок операторов Блок операторов
Loop While Условие Loop Until Условие
Оператор DoWhile – Loopобеспечивает многократное выполнение блока операторов до тех пор, пока условие истинно, а операторDo Until – Loop– пока условие ложно.
Операторы Do – Loop WhileиDo – Loop Untilотличаются от первых двух операторов тем, что сначала выполняется блок операторов, а затем проверяется условие. Таким образом, в этих циклах блок операторов, составляющих тело цикла, выполнится по крайней мере один раз.
Приведем примеры использования цикла Do – Loop While.
Задача 1. Составить программу, позволяющую вводить с клавиатуры целые числа до тех пор, пока не будет введено число, кратное 6, и вычислить количество введенных чисел (вместе с последним).
Программный код
Option Explicit
Sub PR12()
Dim x As Integer, k As Integer
k = 0
Do
x = Val(Inputbox(“Введите число”))
k = k+1
Loop While x mod 6<>0
MsgBox ("количество=" & k)
End Sub
Если использовать оператор Do – Loop Until, то основная часть программы выглядит следующим образом:
k = 0
Do
x = Val(Inputbox(“Введите число”))
k = k+1
Loop Until x mod 6=0
MsgBox ("количество=" & k)
Задача 2. Составить программу, вычисляющую сумму членов последовательности –1, 3, 7, … до тех пор, пока она (сумма) не превысит заданное числоХ.
Задачу можно решить, используя различные формы записи цикла Do – Loop.
Программный код
1.
Option Explicit
Sub PR13()
Dim x As Integer, sum As Integer, a As Integer
x=Val(Inputbox(“Введите число”))
sum = 0
a = -1
Do
sum = sum + a
a = a + 4
Loop While sum<=x ‘ или Loop Until sum>x
MsgBox ("Сумма равна" & sum)
End Sub
2.
…
x=Val(Inputbox(“Введите число”))
sum = 0
a = -1
Do While sum<=x ‘ или Loop Until sum>x
sum = sum + a
a = a + 4
Loop
MsgBox("Сумма равна" &sum)
Задача 3. Вычислить произведение и сумму цифр произвольного числа.
Option Explicit
Sub PR14()
Dim x As Integer, sum As Integer, pr As Long, c As Integer
x=Val(Inputbox(“Введите число”))
sum= 0
pr= 1
Whilex<>0
c=xmod10 ‘ вычисляем последнюю цифру в числе
sum=sum+c‘ вычисляем сумму цифр
pr=pr*c‘ вычисляем произведение цифр
x=x\ 10 ‘ отбрасываем последнюю цифру числа
Wend
MsgBox("Сумма = " &sum& ", произведение = " &pr)
EndSub
Массивы
Часто бывает необходимо работать с некоторым набором однотипных данных как с единым целым. В таких случаях используются массивы – структурированные боксы для хранения множеств элементов данных одинакового типа.
Массивы могут быть одномерными и многомерными.
Одномерные массивы
Одномерный массив – это набор однотипных элементов, расположенных друг за другом в одной строке или столбце.
Пример
1 –34 8 2 6
или
1
2
8
-5
Каждый элемент массива обозначается при помощи имени массива и индекса, заключенного в круглые скобки.
Индекс может быть:
константой
Пример
P(1), C(5)
переменной целого типа
Пример
A(i), B(j)
арифметическим выражением (значение арифметического выражения должно быть целым)
Пример
A(i*2), Q(i^j)
Объявление массива
Как и обычные переменные, массивы должны быть объявлены. Для описания массива используется оператор Dim.
DimИмя массива (Размерность массива)AsТип элементов
Пример
Dim A (100) As Integer
Dim B (50) As Byte
DimС (40)AsDouble
При таком описании массива его элементы индексируются (т.е. нумеруются), начиная с нуля.
Если оператор описания будет выглядеть следующим образом:
Dim A (1 To 100) As Integer,
то элементы массива индексируются с единицы.
Ввод массива
Перед обработкой массива его необходимо заполнить (ввести).
Массив будем считывать с рабочего листа Excel, в который числа заносятся вручную или при помощи счетчика случайных чисел.
1
способ. На рабочем листе введем числа
в ячейки электронной таблицы (рис. 4),
откроем окно программного кода и запишем
в него программу, которая считывает
данный массив чисел.
Рис. 4. Исходный массив
Программный код
OptionExplicit
Sub PR14()
Dim A(20) As Integer
Dim i As Integer
For i = 1 To 6
A(i) = Cells(1, i) ‘ массив заполняется
Next i ‘ числами с рабочего листа Excel
EndSub
2 способ. Массив можно заполнить при помощи счетчика случайных чисел. Для этого в программе после объявления переменных следует написать следующее:
Randomize
For i = 1 To 10
Cells(1, i) = Int(Rnd * 100 – 50)
A(i) = Cells(1, i) ‘ заполнение массива
Next i
Функция Rndвозвращает значение от 0 до 1. Перед вызовом функцииRndиспользуется инструкцияRandomizeбез аргумента для инициализации генератора случайных чисел значением, возвращаемым системным таймером.
Cells(1,i) означает ячейку электронной таблицы, находящуюся в первой строке и столбце с номеромi.
Вообще оператор Cells(i, j)служит для вывода информации в ячейку электронной таблицы или считывания информации из ячейки электронной таблицыExcel. В скобках через запятую указываются номер строки –iи номер столбца –jячейки электронной таблицы.
Пример
Cells(1, 2) =x‘в ячейкуB1 записывается информация из переменной х
х = Cells(1, 2) ‘из ячейки В1 считывают информацию в переменную х