- •Основы vba
- •Алфавит языкаVba
- •Имя переменной
- •Объявление переменных
- •Оператор описания переменных
- •Dim a As Integer
- •Знаки операций
- •Математические функции
- •Оператор присваивания
- •Ввод данных
- •Оператор вывода
- •Линейный процесс
- •Программный код
- •Оператор условного перехода
- •Операторы цикла
- •Оператор цикла с параметромFor–Next
- •Оператор выбораSelectCase
- •Начисление комиссионных
- •Оператор цикла с предусловием While – Wend
- •Оператор цикла Do – Loop
- •Массивы
- •Вывод массива
- •Вычисление суммы, произведения и количества элементов в одномерном массиве
- •Вычисление минимального и максимального элементов в одномерных массивах
- •Двумерные массивы
- •Ввод двумерного массива
- •Вывод двумерного массива
- •Формирование матрицы
- •Вычисление суммы, произведения, количества, минимума и максимума в двумерных массивах
- •Подпрограммы
- •Подпрограмма-процедура
- •Локальные и глобальные параметры (переменные)
- •Формальные и фактические параметры
- •Параметры, передающиеся по значению
- •Подпрограмма-функция
Операторы цикла
Циклический процесс – это процесс, в котором один оператор или группа операторов выполняются многократно при различных значениях аргумента.
Оператор цикла с параметромFor–Next
Оператор цикла For – Next используется, когда заранее известно, сколько раз должно повториться тело цикла.
Общий вид оператора цикла с параметром выглядит следующим образом:
ForСчетчик=Начальное значениеToКонечное значениеStepШаг
Блок операторов
NextСчетчик
Цикл For – Nextобеспечивает выполнение блока операторов (тела цикла)nраз при последовательном изменении счетчика от начального до конечного значения с указанным шагом изменения.
.
Если StepШаг в конструкции отсутствует, то по умолчанию считается, что шаг равен 1.
Пример 1
Задано натуральное число n. Вычислитьn! (факториалn).
Напомним, что n! = 1234…n. Таким образом, в данном примере нужно вычислить произведение. Для его вычисления существует следующее правило: перед организацией цикла необходимо задать начальное значение произведения, равное числу, не влияющему на результат умножения на первом шаге, т.е 1, а затем в цикле предусмотреть оператор, который производит накапливание произведения.
Например, 5! = 12345 = 120.
Программный код
OptionExplicit
Sub PR7() ’ начало процедуры
Описание
переменных с указанием их типов
Dim F As Double
Dim i As Integer
n = Val(InputBox("Введите n")) ‘ ввод числа n с клавиатуры
F= 1 ’ начальное значение произведения
For i = 1 To n ’ начало цикла
F=F*I’оператор накапливания произведения
NextI’ конец цикла
MsgBox ("Факториал числа " & n & "=" & F ’ вывод результата на экран
EndSub’ конец процедуры
Пример 2
Вычислить y=sin0.1+sin0.2+sin0.3+…+sin10
В данном примере нужно вычислить сумму. Для этого перед организацией цикла нужно задать начальное значение суммы, равное числу, не влиящему на результат сложения на первом шаге, т.е. 0.
Программный код
Option Explicit
Sub PR8()
Dim x As Double, y As Double, summa As Double ’описание переменных
summa= 0 ’ начальное значение суммы
For x = 0.1 To 10 Step 0.1 ’ начало цикла
summa=summa+Sin(x) ’оператор накапливания суммы
Nextx’ конец цикла
MsgBox("Сумма=" &summa) ’ вывод результата на экран
Cells(1,1)= "Сумма=" &summa’ вывод результата в ячейку А1 вExcel
EndSub
Пример 3
Задан натуральный ряд чисел. Вычислить сумму нечетных чисел данного ряда.
В этой программе производится вычисление суммы (по предложенному образцу).
Кроме того, для вывода всех чисел этого ряда в Excelдо организации цикла нужно задать номер строки, с которой начнется запись 1-го значения ряда, а в цикле предусмотреть оператор (счетчик), который будет переводить курсор в нижележащую ячейку для записи следующего значения ряда до тех пор, пока не будет записано последнее значение.
Программный код
Option Explicit
Sub PR10()
Dim N As Integer, I As Integer, S As Double, K As Integer
K=Val(InputBox("ВведитеK")) ’ количество членов ряда
Cells(1,1)= ”Ряд” ’ запись в ячейку А1 текста Ряд
N=2 ’ номер строки, с которой начнется запись 1-го значения
S= 0 ’ начальное значение суммы
Fori= 1Tonstep2 ’ цикл для перебора нечетных чисел ряда
Cells(N,1)=I’ запись членов ряда, начиная с 1-го, в 1-й столбецExcel
S=S+I’суммирование членов ряда
N=N+1 ’ счетчик строк
NextI’ конец цикла
Cells(1,2)= “Сумма ряда=” &S’ запись суммы ряда в ячейку В1Excel
MsgBox(“Сумма ряда=” &S) ’ вывод результата суммы на экран
EndSub