Private Sub CommandButton1_Click()

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