Вопрос 23
В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun1 (вставьте нужные операторы в заголовки уже созданной функции), которая вычисляет выражение по формуле:
Тест 5.2-5.3
1) Какое значение получит переменная S после выполнения группы операторов VBA:
For i = 2 To 5 Step -2
Какое значение получит переменная S после выполнения группы операторов VBA:
For i = 5 To 2 Step 2
2) Дана последовательность операторов VBA:
Определить значение переменной x после их выполнения
3) Дана последовательность операторов VBA:
Определить значение переменной x после их выполнения
6) В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=2^2-4^2+6^2-. +30^2.
Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.
Public Function fun4()
Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer
7) В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=2^2-3^2+4^2-. +20^2.
Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.
Public Function fun4()
Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer
8) В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=1-2^3+3^3-. -20^3.
Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.
Public Function fun4()
Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer
9) В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=2^2-3^2+4^2-. +30^2.
Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.
Public Function fun4()
Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer
10) В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=1+2^2+3^2-. +25^2.
Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.
Public Function fun4()
Dim s As Double, i As Integer
11) В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun5, которая вычисляет сумму S=1-2^3+3^3-. -n^3.
Заголовок функции, который должен иметь вид: Function fun5(n), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B8 значение введите в ответ теста.
Public Function fun5(n As Integer) As Integer
Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer
12) В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun5, которая вычисляет сумму S=1-2^2+3^2-. -n^2.
Заголовок функции, который должен иметь вид: Function fun5(n), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B8 значение введите в ответ теста.
Public Function fun5(n As Integer) As Integer
Dim s1 As Double, i1 As Integer, s2 As Double, i2 As Integer
13) В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun6, которая вычисляет сумму n первых натуральных чисел Фибоначчи.
Заголовок функции, который должен иметь вид: Function fun6(n), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B9 значение введите в ответ теста.
Public Function fun6(n As Double) As Double
Dim s As Double, p As Integer, i As Integer, k As Integer
14) В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun7, которая вычисляет сумму квадратов цифр заданного числа n.
Заголовок функции, который должен иметь вид: Function fun7(n), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B10 значение введите в ответ теста.
Public Function fun7(ByVal n As Long) As Double
p = p + (n Mod 10) ^ 2
15) В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun7, которая вычисляет произведение цифр заданного числа n.
Заголовок функции, который должен иметь вид: Function fun7(n), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B10 значение введите в ответ теста.
Public Function fun7(ByVal n As Long) As Double
В книге Excel «Данные к тесту VBA», размещенной в учебных материалах к модулю, составьте функцию VBA с именем Fun9, которая в заданном диапазоне Листа Excel вычисляет количество четных чисел диапазона.
Заголовок функции, который должен иметь вид: Function fun9(A As Variant), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B12 значение введите в ответ теста.
Public Function fun9(a As Variant) As Double
Dim s As Double, i As Variant
For Each i In a
If i Mod 2 = 0 Then s = s + 1
В книге Excel «Данные к тесту VBA», размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc1, которая в диапазоне K1:L4 активного Листа Excel находит наименьшее число. Результат процедура должна вернуть в ячейку B14.
Заголовок процедуры, который должен иметь вид: Procedure Proc1(), уже создан в модуле 2, необходимо только записать тело процедуры.
На листе 1 книги выполните подрограмму и полученное в ячейке B14 значение введите в ответ теста.
Public Sub Proc1()
Dim a As Range, i As Variant, s As Double
Set a = Range(«K1:L4»)
For Each i In a
If i < Min Then Min = i
Cells(14, 2).Value = Min
В книге Excel «Данные к тесту VBA», размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc2, которая в выделенном диапазоне активного Листа Excel вычисляет количество четных положительных чисел. Результат процедура должна вернуть в ячейку B15.
Заголовок процедуры, который должен иметь вид: Procedure Proc2(), уже создан в модуле 2, необходимо только записать тело процедуры.
На листе 1 книги выполните подрограмму и полученное в ячейке B15 значение введите в ответ теста.
Public Sub Proc2()
Dim a As Range, i As Variant, s As Double
Set a = Selection
For Each i In a
If i Mod 2 = 0 And i > 0 Then s = s + 1
Cells(15, 2).Value = s
В книге Excel «Данные к тесту VBA», размещенной в учебных материалах к модулю, составьте функцию VBA с именем Fun10, которая в заданном диапазоне активного Листа Excel вычисляет сумму чисел, кратных заданному числу К.
Заголовок функции, который должен иметь вид: Function fun10(A As Variant, K), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B13 значение введите в ответ теста.
Public Function fun10(a As Variant, k As Double)
Dim s As Double, i As Variant
For Each i In a
If i Mod k = 0 Then s = s + i
В книге Excel «Данные к тесту VBA», размещенной в учебных материалах к модулю, составьте функцию VBA с именем Fun9, которая в заданном диапазоне Листа Excel вычисляет сумму положительных чисел диапазона.
Заголовок функции, который должен иметь вид: Function fun9(A As Variant), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B12 значение введите в ответ теста.
Public Function fun9(a As Variant) As Double
Dim s As Double, i As Variant
For Each i In a
If i > 0 Then s = s + i
В книге Excel «Данные к тесту VBA», размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc2, которая в выделенном диапазоне активного Листа Excel вычисляет сумму четных отрицательных чисел. Результат процедура должна вернуть в ячейку B15.
Заголовок процедуры, который должен иметь вид: Procedure Proc2(), уже создан в модуле 2, необходимо только записать тело процедуры.
На листе 1 книги выполните подрограмму и полученное в ячейке B15 значение введите в ответ теста.
Public Sub Proc2()
Dim a As Range, i As Variant, s As Double
Set a = Selection
For Each i In a
If i Mod 2 = 0 And i < 0 Then s = s + i
Cells(15, 2).Value = s
В книге Excel «Данные к тесту VBA», размещенной в учебных материалах к модулю, составьте функцию VBA с именем Fun9, которая в заданном диапазоне Листа Excel вычисляет количество положительных чисел диапазона.
Заголовок функции, который должен иметь вид: Function fun9(A As Variant), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B12 значение введите в ответ теста.
Public Function fun9(a As Variant) As Double
Dim s As Double, i As Variant
For Each i In a
If i > 0 Then s = s + 1
В книге Excel «Данные к тесту VBA», размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc1, которая в диапазоне K1:N4 активного Листа Excel вычисляет сумму отрицательных чисел. Результат процедура должна вернуть в ячейку B14.
Заголовок процедуры, который должен иметь вид: Procedure Proc1(), уже создан в модуле 2, необходимо только записать тело процедуры.
На листе 1 книги выполните подрограмму и полученное в ячейке B14 значение введите в ответ теста.
Public Sub Proc1()
Dim a As Range, i As Variant, s As Double
Set a = Range(«K1:N4»)
For Each i In a
If i < 0 Then s = s + i
Cells(14, 2).Value = s
В книге Excel «Данные к тесту VBA», размещенной в учебных материалах к модулю, составьте подпрограмму VBA с именем Proc2, которая в выделенном диапазоне активного Листа Excel находит наибольшее число. Результат процедура должна вернуть в ячейку B15.
Заголовок процедуры, который должен иметь вид: Procedure Proc2(), уже создан в модуле 2, необходимо только записать тело процедуры.
На листе 1 книги выполните подрограмму и полученное в ячейке B15 значение введите в ответ теста.
Public Sub Proc2()
Dim a As Range, i As Variant, s As Double
Set a = Selection
For Each i In a
If i > Max Then Max = i
Cells(15, 2).Value = Max
В книге Excel «Данные к тесту VBA», размещенной в учебных материалах к модулю, доработайте пользовательскую форму VBA с именем UserForm2 (уже создана), которая на интервале от M до N находит сумму простых чисел. Результат должен быть получен в текстовом поле TextBox3 (Результат).
Имена полей, форм и кнопок изменять не надо. Требуется только написать операторы в тело процедуры кнопки Выполнить, уже созданой в форме UserForm2.
На листе 1 книги выполните форму UserForm2 и полученное в ячейке B19 значение введите в ответ теста.
Открываем Userform2, 2 раза щёлкаем по кнопке Выполнить
Сначала пишем прогу для простых чисел
Public Function prostoe(ByVal n As Long) As Boolean
For i = 2 To Sqr(n)
If n Mod i = 0 Then
Потом пишем форму
Private Sub CommandButton1_Click()
Dim i As Long, s As Double
If prostoe(i) = True Then s = s + i
Нажимаем выполнить UserForm2 и, в появившемся окне, нажимаем на выполнить
Ответ: Сумма простых : 72
Если нужно найти количество , то вместо этого If prostoe(i) = True Then s = s + i, пишем If prostoe(i) = True Then s = s + 1
Ответ: Количество : 6
В книге Excel «Данные к тесту VBA», размещенной в учебных материалах к модулю, доработайте пользовательскую форму VBA с именем UserForm1 (уже создана), которая среди трех заданых в форме чисел A, B, C , задающих коэффициенты квадратного уравнения, находит сумму корней уравнения. Если корней не существует, возвращает сово «нет». Результат должен быть получен в текстовом поле TextBox4 (Результат).
Имена полей, форм и кнопок изменять не надо. Требуется только написать операторы в тело процедуры кнопки Выполнить, уже созданой в форме UserForm1.
На листе 1 книги выполните форму UserForm1 и полученное в ячейке B18 значение введите в ответ теста.
Какое значение получит переменная s после выполнения группы операторов vba
1) Какое значение получит переменная S после выполнения группы операторов VBA:
Какое значение получит переменная S после выполнения группы операторов VBA:
2) Дана последовательность операторов VBA:
While x > 4 x = x + 1
Определить значение переменной x после их выполнения
3) Дана последовательность операторов VBA:
x = 2 While x < 4 x = x + 1
Определить значение переменной x после их выполнения
6) В книге Excel "Данные к тесту VBA" из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=2^2-4^2+6^2-. +30^2. Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.
Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой — мы готовы помочь.


Определить значения следующего арифметического выражения на VBA:
26 \ 4 * 2 + 19 mod 3
Дана последовательность операторов VBA:
If x = 0 Then x = 2 ^ x — 1
If x > 1 Then y = x ^ 2
If x > 2 Then y = x + 2 / x – 1
Если значение переменной а равно 6, то какое значение получит переменная b при выполнении оператора:
Case 2, 4, 6, 8, 10
В книге Excel «Данные к тесту VBA» из вспогательного материала к тесту, составьте функцию VBA в модуле 1 с именем fun1 (вставьте нужные операторы в заголовки уже созданной функции), которая вычисляет выражение по формуле:
На листе 1 книги выполните функцию и полученное в ячейке B4 значение введите в ответ теста. Дробная часть числа от целой отделяется запятой.
Public Function fun1(x As Double) As Double
fun1 = (1 — x ^ 2) / (2 — 3 * x)
В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию в модуле 1 с именем fun2 на VBA (вставьте нужные операторы в загововки уже созданной функции), которая вычисляет выражение по формуле: если x больше 0, то fun2=(1-2x)/(2+x), иначе fun2=Sin(3x)-1
На листе 1 книги выполните функцию и полученное в ячейке B5 значение, округленное до сотых, введите в ответ теста. Дробная часть числа от целой отделяется запятой.
Public Function fun2(x As Double) As Double
fun2 = (1 — 2 * x) / (2 + x)
fun2 = Sin(x) * 3 — 1
В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA с именем fun3 для нахождения минимального произведения двух чисел из трех произвольных чисел A, B, C.
Заголовок функции, который должен иметь вид: Function fun3(a,b,c), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B6 значение введите в ответ теста.
Public Function fun3(a As Double, b As Double, c As Double) As Double
If a < c And b < c Then
If b < a And c < a Then
В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA с именем fun3 для нахождения из трех произвольных чисел A, B, C, задающих длины сторон треугольника, площади треугольника, если треугольник существует, в противном случае функция должна возвратить значение -1.
Заголовок функции, который должен иметь вид: Function fun3(a,b,c), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B6 значение введите в ответ теста.
Public Function fun3(a As Double, b As Double, c As Double) As Double
Dim p As Double
If b + c > a And c + a > b And a + b > c Then
fun3 = (p * (p — a) * (p — b) * (p — c)) ^ 0.5
В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA с именем fun3 для нахождения из трех произвольных чисел A, B, C, задающих длины сторон треугольника, самую длинную сторону, если треугольник существует, в противном случае функция должна возвратить значение -3.
Заголовок функции, который должен иметь вид: Function fun3(a,b,c), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B6 значение введите в ответ теста.
Public Function fun3(a As Double, b As Double, c As Double) As Double
Dim m As Double
If b + c > a And c + a > b And a + b > c Then
Определить значения следующего арифметического выражения на VBA:
2 \ 4 * 2 + 15 mod 3
В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA с именем fun3 для нахождения из трех произвольных чисел A, B, C минимального значения.
Заголовок функции, который должен иметь вид: Function fun3(a,b,c), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B6 значение введите в ответ теста.
Public Function fun3(a As Double, b As Double, c As Double)
Dim m As Double
Если значение переменной а равно 20, то какое значение получит переменная b при выполнении оператора:
Case 2, 4, 6, 8, 10, 20
В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию в модуле 1 с именем fun1 на VBA (вставьте нужные операторы в заголовки уже созданной функции), которая вычисляет выражение по формуле:
На листе 1 книги выполните функцию и полученное в ячейке B4 значение введите в ответ теста. Дробная часть числа от целой отделяется запятой.
В книге Excel «Данные к тесту VBA» из вспомогательного материала к тесту, составьте функцию в модуле 1 с именем fun2 на VBA (вставьте нужные операторы в загововки функции созданной функции), которая вычисляет выражение по формуле: если x > 2, то fun2=(1-2x)/(2-x), иначе fun2=cos(x)+1.
На листе 1 книги выполните функцию и полученное в ячейке B5 значение, округленное до сотых, введите в ответ теста. Дробная часть числа от целой отделяется запятой.
В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA с именем fun3 для нахождения минимального произведения двух чисел из трех произвольных чисел A, B, C.
Заголовок функции, который должен иметь вид: Function fun3(a,b,c), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B6 значение введите в ответ теста.
В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun1 (вставьте нужные операторы в заголовки уже созданной функции), которая вычисляет выражение по формуле:
Какое значение получит переменная S после выполнения группы операторов VBA:
For i = 2 To 5 Step -2
Какое значение получит переменная S после выполнения группы операторов VBA:
For i = 5 To 2 Step 2
Дана последовательность операторов VBA:
Определить значение переменной x после их выполнения
Дана последовательность операторов VBA:
Определить значение переменной x после их выполнения
В книге Excel «Данные к тесту VBA» из учебных материалов к модулю, составьте функцию VBA в модуле 1 с именем fun4, которая вычисляет сумму S=2^2-4^2+6^2-. +30^2.
Заголовок функции, который должен иметь вид: Function fun4(), уже создан в модуле 1, необходимо только записать тело процедуры.
На листе 1 книги выполните функцию и полученное в ячейке B7 значение введите в ответ теста.
Циклы VBA. Циклы в VBA Циклы с условием в vba
Вы познакомились с элементом управления ComboBox (Комбинированный список).
На этом занятии мы продолжим изучение операторов языка Visual Basic.Net, остановимся на операторах цикла.
Циклические алгоритмические структуры бывают трех видов:
- циклы со счетчиком, в которых тело цикла выполняется определенное количество раз;
- циклы для обработки массивов или коллекций;
- циклы по условию, в которых тело цикла выполняется, пока условие истинно (или до тех пор, пока условие не станет истинным).
На этом уроке рассмотрим оператор цикла со счетчиком (For . . . Next). Напишем проект с использованием этого оператора.
Цикл со счетчиком For . . . Nex t используется тогда, когда заранее известно, какое число повторений необходимо выполнить.
Общий вид оператора
For Счетчик = НачЗнач To КонЗнач Тело цикла Next [Счетчик]
Синтаксис оператора следующий: строка, начинающаяся с ключевого слова For, является заголовком цикла, а строка с ключевым словом Next — концом цикла, между ними располагаются операторы, являющиеся телом цикла.
Алгоритм выполнения оператора For . . . Next
- Значение переменной Счетчик устанавливается равным НачЗнач.
- Проверяется условие Счетчик 0) и операторы цикла выполняются повторно (всего они выполнятся 100 раз), до C = 0. Когда же условие C >0 становится ложным и цикл прекращается.
Тот же самый фрагмент программы, выполненный с использованием цикла с предусловием по синтаксису 2:
В данном случае цикл выполняется, пока условие равно False, в отличие от предыдущего случая, то есть продолжается до выполнения условия C = 0.
Операторы циклов по синтаксису 3 и 4 очень похожи на первые два за исключением того, что условие не вычисляется до тех пор, пока цикл не выполнится хотя бы один раз.
В синтаксисах этих циклов можно использовать операторы безусловного выхода из цикла Exit For и Exit Do, позволяющих передать управление оператору, находящемуся за циклом. Например, в следующем фрагменте программы, если начальное значение C окажется >50, то цикл немедленно прекратиться.
В отличии от цикла Do..Loop цикл While ..Wend не имеет второго варианта, в котором проверка условия выполняется в конце цикла. Кроме того, для него нет оператора выхода из цикла, наподобие Exit Do.
Цикл For. Next в VBA Excel, его синтаксис и описание отдельных компонентов. Примеры использования цикла For. Next.
Цикл For. Next в VBA Excel предназначен для выполнения группы операторов необходимое количество раз, заданное управляющей переменной цикла — счетчиком. При выполнении цикла значение счетчика после каждой итерации увеличивается или уменьшается на число, указанное выражением оператора Step, или, по умолчанию, на единицу. Когда необходимо применить цикл к элементам, количество которых и индексация в группе (диапазон, массив, коллекция) неизвестны, следует использовать .
Синтаксис цикла For. Next
В квадратных скобках указаны необязательные атрибуты цикла For. Next.
Компоненты цикла For. Next
| Компонент | Описание |
| counter | Обязательный атрибут. Числовая переменная, выполняющая роль счетчика, которую еще называют управляющей переменной цикла. |
| start | Обязательный атрибут. Числовое выражение, задающее начальное значение счетчика. |
| end | Обязательный атрибут. Числовое выражение, задающее конечное значение счетчика. |
| Step* | Необязательный атрибут. Оператор, указывающий, что будет задан шаг цикла. |
| step | Необязательный атрибут. Числовое выражение, задающее шаг цикла. Может быть как положительным, так и отрицательным. |
| statements | Необязательный** атрибут. Операторы вашего кода. |
| Exit For | Необязательный атрибут. Оператор выхода из цикла до его окончания. |
| Next [ counter ] | Здесь counter — необязательный атрибут. Это то же самое имя управляющей переменной цикла, которое можно здесь не указывать. |
*Если атрибут Step отсутствует, цикл For. Next выполняется с шагом по умолчанию, равному 1 .
**Если не использовать в цикле свой код, смысл применения цикла теряется.
Примеры циклов For. Next
Вы можете скопировать примеры циклов в свой модуль VBA, последовательно запускать их на выполнение и смотреть результаты.
Простейший цикл
Заполняем десять первых ячеек первого столбца активного листа Excel цифрами от 1 до 10:
Sub test1() Dim i As Long For i = 1 To 10 Cells(i, 1) = i Next End Sub
Простейший цикл с шагом
В предыдущий цикл добавлен оператор Step со значением 3, а результаты записываем во второй столбец:
Sub test2() Dim i As Long For i = 1 To 10 Step 3 Cells(i, 2) = i Next End Sub
Цикл с отрицательными аргументами
Этот цикл заполняет десять первых ячеек третьего столбца в обратной последовательности:
Sub test3() Dim i As Long For i = 0 To -9 Step -1 Cells(i + 10, 3) = i + 10 Next End Sub
Увеличиваем размер шага до -3 и записываем результаты в четвертый столбец активного листа Excel:
Sub test4() Dim i As Long For i = 0 To -9 Step -3 Cells(i + 10, 4) = i + 10 Next End Sub
Вложенный цикл
Внешний цикл последовательно задает индексы первых десяти строк активного листа, а вложенный цикл складывает числа в первых четырех ячейках строки с текущем индексом и записывает сумму в ячейку пятого столбца. Перед запуском вложенного цикла с накопительным сложением, пятую ячейку соответствующей строки обнуляем, чтобы в случае нахождения в ней какого-либо числа, оно не прибавилось к итоговой сумме.
Sub test5() Dim i1 As Long, i2 As Long For i1 = 1 To 10 «Пятой ячейке в строке i1 присваиваем 0 Cells(i1, 5) = 0 For i2 = 1 To 4 Cells(i1, 5) = Cells(i1, 5) + Cells(i1, i2) Next Next End Sub
Выход из цикла
В шестой столбец активного листа запишем названия десяти животных, конечно же, с помощью цикла For. Next:
Sub test6() Dim i As Long For i = 1 To 10 Cells(i, 6) = Choose(i, «Медведь», «Слон», «Жираф», «Антилопа», _ «Крокодил», «Зебра», «Тигр», «Ящерица», «Лев», «Бегемот») Next End Sub
Следующий цикл будет искать в шестом столбце крокодила, который съел галоши. В ячейку седьмого столбца цикл, пока не встретит крокодила, будет записывать строку «Здесь был цикл», а когда обнаружит крокодила, запишет «Он съел галоши» и прекратит работу, выполнив команду Exit For. Это будет видно по ячейкам рядом с названиями животных ниже крокодила, в которых не будет текста «Здесь был цикл».
Sub test7() Dim i As Long For i = 1 To 10 If Cells(i, 6) = «Крокодил» Then Cells(i, 7) = «Он съел галоши» Exit For Else Cells(i, 7) = «Здесь был цикл» End If Next End Sub
Такие данные на активном листе Excel вы получите, если последовательно запустите на выполнениев редакторе VBA все семь подпрограмм из примеров, демонстрирующих работу циклов For. Next.
Цикл с дробными аргументами
Атрибуты start, end и step могут быть представлены числом, переменной или числовым выражением:
For i = 1 To 20 Step 2 For i = a To b Step c For i = a — 3 To 2b + 1 Step c/2
В результате вычисления значения переменной вне цикла или выражения внутри его может получиться дробный результат. VBA Excel округлит его до целого числа, используя :
«Значения атрибутов до округления For i = 1.5 To 10.5 Step 2.51 «Округленные значения атрибутов For i = 2 To 10 Step 3
Старайтесь не допускать попадания в тело цикла For. Next неокругленных значений аргументов, чтобы не получить непредсказуемые результаты его выполнения. Если без дробных чисел не обойтись, а необходимо использовать обычное округление, применяйте в коде VBA функцию рабочего листа WorksheetFunction.Round для округления числа перед использованием его в цикле For. Next.
Инструкция цикла представляет собой указание, из которого ясно, какой набор инструкций (этот набор инструкций называется телом цикла) нужно выполнять многократно и каково правило окончания выполнения цикла.
7.2.1. Параметрический цикл For… Next
Этот цикл управляется параметром, который при повторении выполнения тела цикла изменяет с заданным шагом свое значение от заданного начального значения до заданного конечного значения. Такой цикл используют в случае, когда заранее известно, сколько необходимо совершить повторений выполнения тела.
Синтаксис цикла: For ИПЦ=НЗПЦTo КЗПЦ[Step ШИПЦ] Тело цикла (одна или несколько инструкций) Next [ИПЦ]
Слова For (для), To (до), Step (шаг), Next (затем) являются зарезервированными.
ИПЦ – имя параметра цикла (переменная любого числового типа);
НЗПЦ – начальное значение параметра цикла (выражение любого числового типа), которое параметр цикла будет иметь при первом выполнении тела цикла;
КЗПЦ – конечное значение параметра цикла (выражение любого числового типа), с которым сравнивается текущее значение параметра цикла;
ШИПЦ – шаг изменения параметра цикла (выражение любого числового типа) – необязательная часть инструкции цикла.
Числовые значенияНЗПЦ и КЗПЦ задают интервал, в котором будет изменяться параметр цикла. Необязательный параметр ШИПЦ задает шаг изменения счетчика цикла на каждом проходе. По умолчанию, если он отсут–ствует, то принимается равным 1. Наконец, после инструкций, составляющих тело цикла, следует команда, обозначающая границу действия цикла. В случае вложенных циклов (в тело цикла входит инструкция цикла) полезно указывать, к какому из них относится команда Next . Это достигается добавлением после слова Next имени параметра цикла.
Процесс выполнения инструкции For … Next для положительного шага иллюстрирует рисунок 7.4.
В первом примере запишем инструкции для вычисления суммы всех целых нечетных чисел от 1 до 100.
Dim I As Integer, Сумма As Integer
For i = 1 To 100 Step 2
В следующем примере будут продемонстрированы две возможности: явно заданный шаг цикла и отсчет в обратном направлении. Последнее достигается заданием отрицательного шага и тем, что начальное значение параметра цикла больше, чем конечное.
Dim N As Integer
For N = 100 To 60 Step –10
Этот код выведет на текущей форме:
Следующая инструкция заставляет компьютер подавать звуковой сигнал 50 раз. Инструкция For определяет, что параметром цикла является переменная x , ее начальное и конечное значения. Команда Next изменяет счетчик с шагом.
Dim x As Integer
Инструкцию For. Next можно завершить досрочно с помощью инструкции Exit For. Выполнение этой инструкции приводит к немедленному выходу из цикла.
7.2.2. Инструкция цикла Do While. Loop или Do. Loop While
Здесь While (пока) и Loop (цикл) зарезервированные слова. Циклы типа While предназначены для ситуаций, когда количество повторений тела цикла (итераций) заранее не известно. Вот синтаксис двух разновидностей цикла While :
Do While УсловиеПовторения Группа инструкций Loop
Do Группа инструкций Loop While УсловиеПовторения
Различие между ними заключается в том, что УсловиеПовторения (условие повторения выполнения тела цикла) проверяется в первом случае до выполнения тела цикла (цикл – пока), а во втором случае – после выполнения тела цикла (цикл – до).
Перейдем к примерам.
Рассмотрим действие следующего участка программы.
Do While Номер > 10
Номер = Номер — 1
Счетчик = Счетчик + 1
MsgBox («Выполнено » & Счетчик & _
При выполнении этого участка программы в окне функции MsgBox будет выведено:
Выполнено 10 итераций цикла.
В этой программе условие проверяется до входа в цикл. Если переменной Номер задать значение, равное 9 вместо 20, инструкции внутри цикла выполняться не будут.
В следующей программе инструкции внутри цикла выполняются только один раз до того, как условие не будет выполнено.
Номер = Номер — 1
Счетчик = Счетчик + 1
Loop While Номер > 10
MsgBox («В цикле выполнено » & Счетчик & _
Инструкцию Do. Loop можно завершить досрочно с помощью инструкции Exit Do .
Кроме структур принятия решений, существуют еще одна разновидность управляющих конструкций, называемая циклом.
Цикл — это алгоритмическая структура, при помощи которой реализуется многократное повторение блоков операторов.
В языке Visual Basic существует три основных вида циклов, которые реализуется при помощи конструкций For:Next, Do:Loop и While:Wend.
Цикл For:Next. Используется в том случае, когда количество повторов заданного блока операторов известно заранее. Данная конструкция выглядит следующим образом:
For счетчик = начальное значение To конечное значение Операторы1 Операторы2 Next [счетчик]
Когда приведенные операторы выполняются первый раз, то переменной счетчику присваивается начальное значение, после чего возможны два варианта действий. Если в результате проверки условия счетчик > конечное значение было получено значение True, то происходит завершение цикла, при этом блоки операторы1 и операторы2 ни разу не выполняются. С другой стороны, если результатом проверки условия является False, то в этом случае блоки операторов выполняются первый раз, после чего происходит переход на начало цикла. Далее значение переменной-счетчика увеличивается на шаг, расположенный после ключевого слова Step (в случае его отсутствия устанавливается шаг = 1). После этого снова проверяется истинность условия счетчик > конечное значение и т.д., окончание цикла происходит в тот момент, когда результатом данной проверки станет значение True.
Зачастую бывает необходимо «аварийно» завершать работу цикла при выполнении какого-либо дополнительного условия. В этом случае внутри цикла следует использовать служебное словосочетание Exit:For, которое обычно располагают в управляющей конструкции, например:
If условие Then Exit For
Если результатом проверки условия будет значение True, то выполнение цикла будет прекращено, причем блок операторы1 будет выполнен очередной раз, а блок операоры2 — нет.
Цикл Do:Loop. Применяется в том случае, когда число повторений операторов тела цикла заранее неизвестно. Существуют четыре разновидности данной конструкции. При использовании первых двух цикл либо выполнится много раз, либо не выполнится вообще.
Do Until условие Операторы Loop
Если результатом проверки условия является значение False, то блок операторы выполняется, иначе осуществляется переход на оператор, расположенный после служебного слова Loop. С другой стороны, если первая проверка условия даст результат True, то цикл не выполнится ни разу.
Do While условие Операторы Loop
Если условие истинно, то происходит выполнение блока операторы, если же ложно, то есть результатом проверки является False, то цикл не выполниться ни разу.
В случае использования последних двух конструкций цикл будет выполнен хотя бы один раз.
Do Операторы Loop Until условие
Блок операторы выполняется до тех пор, пока результатом проверки условия является значение False, иначе выполнение цикла заканчивается.
Do Операторы Loop While условие
В случае ложности условия выполняется блок операторы, если же оно истинно, т.е. результатом проверки является значение True, то происходит окончание чикла.
Цикл While:Wend. Также используется в том случае, когда число повторений операторов тела цикла заранее неизвестно, и имеет следующий синтаксис:
While условие Операторы Wend
Если результатом проверки условия является значение True, то блок операторы выполняется, иначе осуществляется переход на оператор, расположенный после служебного слова Wend. С другой стороны, если первая проверка условия даст результат False, то цикл не выполнится ни разу.