- •Введение
- •Лабораторная работа №1 Знакомство с Visual Basic for Applications
- •Лабораторная работа №2 Создание первой программы в vba
- •Объявление переменных
- •Лабораторная работа №3 Построение алгоритма ветвления. Конструкция If _ Then _ Else
- •Лабораторная работа №5 Организация циклов Операторы for…next и while…wend
- •Цикл For...Next
- •Оператор Do While...Loop
- •Оператор Do Until...Loop
- •Рабочее задание (по вариантам):
- •Информация для выполнения заданий
- •Лабораторная работа № 6 Создание пользовательской формы
Лабораторная работа №5 Организация циклов Операторы for…next и while…wend
Visual Basic предлагает несколько конструкции для организации циклов: цикл For … Next дает возможность устанавливать число проходов цикла, цикл Do While ... Loop выполняется поа условие принимает истинное значение, цикл Do Until ... Loop выполняет цикл пока условие неверно.
Цикл For...Next
Цикл for…next применяется в случаях, когда количество проходов цикла заранее известно. В других случаях используют другие операторы цикла.
Цикл For . . .Next имеет следующую форму записи:
For Счетчик = Начальное_значение То Конечное_значение [Step Шаг]
Операторы
Next [Счетчик]
В начале выполнения цикла значение Счетчик устанавливается в Начальное значение. При каждом проходе переменная Счетчик увеличивается на 1 или на величину Шаг. Если она достигает или становится больше (меньше, при отрицательном шаге) Конечное значение, то цикл завершается, и выполняются следующие операторы. Разность между начальным и конечным значением, деленная на величину шага, составляет число проходов.
Пример 1. Программа, подсчитывающая сумму 100 первых чисел.
Sub Сумма1()
Dim Sum As Integer, i As Integer
Sum = 0
For i = 1 To 100
Sum = Sum + i
Next i
MsgBox “Сумма=“, Sum
End Sub
Для непосредственного обращения к ячейкам Excel в VBA существует оператор Cells(i, j), где I – номер строки листа Excel, j- номер столбца. Например, ячейка А2 Cells(2, 1).
Оператор Do While...Loop
В Visual Basic оператор Do While...Loop выполняет цикл до тех пор, пока выполняется заданное условие. Данный оператор имеет вид:
Do While Условие
[Операторы]
Loop
Пример 2. Программа подсчета суммы всех чисел в диапазоне от А1до А15.
Sub Сумма2()
Dim Sum As Integer
Dim I As Integer
Sum = 0
I = 1
Do While I <= 15
Sum = Sum + Cells( I , 1)
I = I + 1
Loop
MsgBox “Сумма=“, Sum
End Sub
Оператор Do Until...Loop
В Visual Basic оператор Do Until...Loop выполняет цикл, пока заданное условие принимает ложное значение. Если, условие принимает истинное значение, когда VBA выполняет этот оператор в первый раз, то VBA просто пропускает, не выполняя его ни разу.
Данный оператор имеет вид:
Do Until Условие
[Операторы]
Loop
В качестве примера переделаем пример, рассмотренный выше - подсчета суммы всех чисел в диапазоне от А1до А15.
Пример 3.
Sub Сумма3 ()
Dim Sum As Integer
Dim I As Integer
Sum = 0
I = 1
Do Until I > 15
Sum = Sum + Cells( I , 1)
I = I + 1
Loop
MsgBox “Сумма=“, Sum
End Sub
Рабочее задание (по вариантам):
Напишите в трех вариантах (for...next,do while…loop и do until...loop) программу, которая
-
возводит в квадрат положительные ячейки в диапазоне от A1 до А10 и помещает результат в ячейки от B1 до B10. Отрицательные ячейки копируются без изменения.
-
определяет четность/нечетность чисел в диапазоне от С2 до С8 и помещает результат в ячейки от B2 до B8.
-
анализирует ячейки Excel в диапазоне от В1 до B12 и выделяет отрицательные ячейки фоном красного цвета.
-
сравнивает ячейки в диапазоне от A1 до A5 с ячейками в диапазоне от С1 до C5. Результаты сравнения в виде знаков “=” или “<>” помещаются в ячейки B1…B5.
-
вычисляет сумму квадратов положительных ячеек в диапазоне D1…D7.
-
находит наименьшую ячейку в диапазоне D1…D14.
-
находит наибольшую ячейку в диапазоне С2…С10.
-
находит корень из положительных чисел в ячейках от D1 до D9 и помещает результат в ячейки от E1 до E9.
-
подсчитывает среднее арифметическое положительных ячеек в диапазоне от С1 до С8.
-
заполняет ячейки от A1 до A10 арифметической последовательностью, с шагом 5. Начальный элемент последовательности запросить в окне ввода.
-
заполняет ячейки от B1 до B8 геометрической последовательностью, при котором каждый последующий элемент вдвое больше предыдущего. Начальный элемент последовательности запросить в окне ввода.
-
находит сумму положительных чисел в диапазоне от A1 до A8.
-
находит сумму отрицательных чисел в диапазоне от A1 до A10.
-
меняет знак всех чисел в диапазоне от A1 до А10 и помещает результат в ячейки от B1 до B10.
-
анализирует ячейки Excel в диапазоне от А1 до А10 (ячейки содержат цифры 2, 3, 4, 5) и выводит количество ячеек, содержащие значение 5, и количество ячеек с цифрами 4.