Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA лекции.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
716 Кб
Скачать
☆
        1. Оператор с заданным количеством повторений.

Синтаксис оператора:

For переменная = значение1 To значение2 Step шаг

Инструкции тела цикла

Next

Сначала переменной присваивается значение1 и выполняются Инструкции тела цикла. Затем к переменной прибавляется шаг, и, если новое значение переменной попадает в интервал от значения1 до значения2, то продолжают выполняться Инструкции тела цикла.

Как только значение переменной выходит за границы указанно­го интервала, управление передается оператору, следующему за Next. Если шаг = 1, то его можно не указывать и даже не писать слово Step.

Для досрочного выхода из цикла используется оператор Exit For. Обычно он записывается в каком-то из условных операторов.

Пример 6. Для значений переменной х из интервала [ 0; 3 ] , изменяющейся с шагом 0.5, составить таблицу значений функции . Записать результаты на Лист Excel.

Sub табулирование ( )

Dim x As Single, y As Single, i As Integer

Range("A1") . Value = "табулирование функции"

Range("A2") . Value = "X"

Range("B2") . Value = "Y"

i = 3 ' i - номер строки

For x = 0 To 3 Step 0.5

y = Sin(x) + Cos(x)

Cells(i, 1) . Value = x

Cells(i, 2) . Value = y

i = i + 1

Next

End Sub

Рисунок 1.9 – Результаты работы программы "табулирование "

        1. Оператор цикла по множеству

Синтаксис оператора:

For элемент IN группа

Инструкции тела цикла

Next

Оператор применяется для выполнения одного и того же набора операторов для нескольких объектов. Чаще всего в качестве элемента рассматривается ячейка, а множеством является диапазон. Тогда элемент должен быть описан как объект типа Range. Досрочный выход из цикла осуществляет оператор Exit For.

Пример 7. В диапазоне А3:D25 находятся числа. Проверить есть ли среди них числа, равные 1.5. Вывести соответствующее сообщение.

Sub задача7( )

Dim r As Range

For Each r In Range ( "A3 : D25" )

If r . Value = 1.5 Then

r . Select

MsgBox "Есть число = 1.5"

Exit Sub

' Как только встречается нужное число,

' происходит досрочный выход из процедуры

End If

Next

MsgBox "Нет чисел = 1.5"

' Эта часть программы работает только, если таких значений нет

End Sub

        1. Операторы цикла Do … Loop

Эти операторы тоже выполняют повторяющиеся вычисления, но прекращают свою работу в зависимости от логических условий. Существует два типа условий: While и Until.

Оператор цикла с условием While выполняет операторы тела цикла до тех пор, пока условие истинно. Оператор цикла с условием Until работает до тех пор, пока условие ложно. Как только условие Until станет истинным, оператор заканчивает свою работу.

Условия могут быть записаны в заголовке цикла рядом со словом Do или в последней строке цикла после слова Loop.

Для досрочного выхода из цикла используется оператор Exit Do.

Возможные варианты синтаксиса оператора:

Do while условие Do until условие

операторы или операторы

Loop Loop

или

Do Do

операторы или операторы

Loop while условие Loop until условие

Операторы цикла, у которых условие записано после слова Do, сначала проверяют условие. И если условие не выполняется в самый первый раз, то такой оператор не будет работать ни разу. Операторы, у которых условие записано после слова Loop в любом случае проработают хотя бы один раз.

Пример 8. В ячейке D2 находится число Х. Подсчитать все сте­пени числа X, которые меньше 1000. Записать их на Лист Excel в два столбца: в одном столбце - показатель степени, в другом - ее значение

Sub задача8( )

Dim x As Single, st As Single

Dim i As Integer, k As Integer

' i - номер строки, k - показатель степени

Range("A1") . Value = "k"

Range("B1") . Value = "x^k"

Range("D1") . Value = "x"

x = Range("D2") . Value

st = x ' st - х в степени k

i = 2: k = 1

Do

Cells(i, 1) . Value = k

Cells(i, 2) . Value = st

Cells(i, 2) . NumberFormat = "0 . 0000"

i = i + 1

st = st * x

k = k + 1

Loop While st < 1000

End Sub

Рисунок 1.10 – Результаты работы программы "задача8"

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]