i = 3 ‘ строка с которой начинаются записи в таблице
Do Until Worksheets("Склад").Cells(i, 3) = "" ‘ проверяется условие – не являеся ли строка пустой
i = i + 1 ‘ подсчитывается количество заполненных строк
Loop
Worksheets("Склад").Cells(i + 4, 1) = "Общее количество видов"
Worksheets("Склад").Cells(i + 4, 3) = i
End Sub
Рис. 5.1 − Образец оформления рабочего листа для примера 1
Цикл будет работать до тех пор, пока не встретится пустая строка. В переменной i после окончания цикла будет записан номер строки, следующей за последней заполненной строкой таблицы. Результат выведется в первый и третий столбец на 4 строки ниже последней строки таблицы.
Пример 2. Пусть необходимо вычислить значения на интервале x=3 (0,1) 4 (х меняется от 3 до 4 с шагом 0,1).
Создадим командную кнопку и напишем для нее следующую процедуру:
Private Sub CommandButton1_Click()
x=3: n=1
Do While x<=4
t=Sin(x)^2+Exp(3-x)
Worksheets(“Лист1”).Cells (1, n) =t
x=x+0.1: n=n+1
Loop
End Sub
Перед началом цикла переменной x присваивается начальное значение 3. Затем в начале цикла проверяется условие x<=4, где 4 − конечное значение x. Если это условие верно, то выполняются все операторы, входящие в тело цикла и вычисляется значение x, увеличенное на величину шага. Как только условие x<=4 станет неверным, циклический процесс и выполнение программы завершается.
В этой программе в одной строке записано два оператора, разделенные двоеточием. Результаты вычислений размещаются в первой строке на рабочем листе Excel.
Пример 3. Пусть нужно вычислить значение q по формуле: для z={1; 4; 7,5; 9; 15} и a=3, а также для значений z=0 (0,5) 5. Ввод исходных данных должен осуществляться из ячеек рабочего листа. Вывод результатов надо организовать в ячейки на рабочем листе Excel.
Составим две процедуры. Первую с использованием оператора цикла For... Next и вторую с использованием оператора цикла Do...Loop. Для решения задачи оформим рабочий лист согласно образцу:
Рис. 5.2 − Образец оформления рабочего листа для примера 3
Для кнопки «Расчет For... Next»составим следующую процедуру:
Private Sub CommandButton1_Click()
a = 3
j = 18 ' j − это номер строки, в которую введено первое значение z
For i = 1 To 5 ‘ счетчик количества значений переменной z
z = Worksheets("Лист4").Cells(j, 2)
q = Sqr(z ^ 2 + 8 * a) * Log(z + 0.5)
Worksheets("Лист4").Cells(j, 3) = q
j = j + 1
Next i
End Sub
Для кнопки «Расчет Do...Loop» процедура может иметь вид:
Private Sub CommandButton2_Click()
a = 3: j = 18: z = 1
Do While z <= 5
q = Sqr(z ^ 2 + 8 * a) * Log(z + 0.5)
Worksheets("Лист4").Cells(j, 8) = q
z = z + 0.5
j = j + 1
Loop
End Sub
Для проверки результатов вычислений с помощью формул Excel в ячейку D15 можно поместить формулу:
=КОРЕНЬ(B15^2+8*$J$7)*LN(B15+0,5).
Её надо скопировать в ячейки D16:D19 и в ячейки I15:I23. Результат расчета с помощью VBA и Excel должен совпасть.
Содержание заданий
1. Выполнить приведенные выше примеры циклических программ.
2. В табл. 5.1 приведены формулы и два варианта исходных данных, по которым надо составить две программы с одними и теми же расчетными формулами. Предусмотреть вывод результатов в ячейки таблицы на рабочем листе Excel.
Таблица 5.1
№ | Формула для вычислений | For...Next | Do...Loop |