Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по VBA.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
2.47 Mб
Скачать

Безусловный выход из цикла.

Цикл можно выполнить произвольное число раз, либо ни одного. Инструкция Exit Do позволяет безусловно передать управление команде, которая следует за последней командой цикла.

Counter = 99

Do Until Counter <= 0

If Counter > 50 Then

MsgBox "Начальное значение больше допустимого"

Exit Do

End If

Call MySubroutine

Counter = Counter - 2

Loop

В данном примере выполняется безусловный выход из цикла, если значение переменной Counter больше 50. Таким образом можно предотвратить возникновение ошибок в других частях программы.

Цикл While…Wend

Инструкция While…Wend является разновидностью инструкции Do…Loop. В ранних версиях Basic, в которых не было инструкции Do…Loop, весьма эффективно использовалась команда While…Wend. Формат инструкции прост:

While [условие]

инструкции

Wend

Первый пример для инструкции Do…Loop можно с легкостью изменить, чтобы использовать цикл While…Wend:

Counter = 100

While Counter > 0

Call MySub

Counter = Counter - 1

Wend

Инструкция While…Wend в отличие от цикла Do…Loop не имеет второго варианта, в котором проверка условия выполняется в конце цикла. Кроме того, для данного цикла нет инструкции для безусловного выхода, подобной Exit Do.

Цикл For…Next

Инструкцию For…Next можно встретить в большинстве языков программирования. Она позволяет циклически выполнить набор утверждений заданное число раз. Формат инструкции следующий:

For счетчик = начало To конец [Step шаг]

[инструкции]

Next счетчик

Параметр счетчик - это числовая переменная, которая автоматически увеличивается после каждого повтора. Начальное значение счетчика равно параметру начало, а конечное - параметру конец. Приведем пример программы перебора всех дней недели:

Sub Дни_недели()

For i = 1 To 8

Select Case i

Case 1

День = "Понедельник"

Case 2

День = "Вторник"

Case 3

День = "Среда"

Case 4

День = "Четверг"

Case 5

День = "Пятница"

Case 6

День = "Суббота"

Case 7

День = "Воскресенье"

Case Else

День = "Нет вариантов"

End Select

MsgBox (День)

Next i

End Sub

Обратите внимание, что переменная i автоматически увеличивается по достижении конца цикла. Ее не требуется изменять отдельной командой. Применяемый по умолчанию шаг равный 1, можно изменить, указав необязательное ключевое слово Step и величину шага. Значение шага может быть как положительным, так и отрицательным, что позволяет также создать циклы для счета в обратном направлении.

Практическое упражнение.

Напишем программу, которая бы имитировала выбрасывание игральной кости с помощью датчика случайных чисел.

После запуска программы, мы должны будем ввести число выбрасываний. Окончательным результатом работы будет сообщение о количестве выпаданий каждой грани.

Чтобы выполнить эту задачу, нам придется воспользоваться несколькими новыми функциями:

Rnd() - генерация случайного числа в диапазоне [0; 1);

Int(число) - целая часть числа;

Chr(13) - перевод строки (аналогично нажатию клавиши Enter).

  1. Перейдите в редактор VBA и откройте окно проекта, если до этого оно было закрыто.

  2. Отобразите окно модуля.

  1. В окне модуля введите следующую процедуру:

Public Sub Выбрасывание_кости()

Dim numbers(6) As Double

Dim a As Double

N = InputBox("Введите число выбрасываний кости")

For i = 1 To N

a = Int(Rnd() * 6) + 1

numbers(a) = numbers(a) + 1

Next i

info = "Число выбрасываний" & Chr(13) & Chr(13) & _

"1 - " & numbers(1) & _

" 4 - " & numbers(4) & Chr(13) & _

"2 - " & numbers(2) & _

" 5 - " & numbers(5) & Chr(13) & _

"3 - " & numbers(3) & _

" 6 - " & numbers(6)

MsgBox (info)

End Sub