
- •Методические указания
- •Среде Microsoft excel
- •Лабораторная работа №1. Введение в Visual Basic for Applicрations. Структура программы. Типы данных.
- •Р ис. 1.1 Редактор vba
- •Практическое упражнение.
- •Контрольные вопросы.
- •Лабораторная работа №2. Инструкции управления порядком выполнения команд.
- •Инструкция If…Then…Else
- •Инструкция Select Case
- •Безусловный переход с помощью инструкции GoTo
- •Практическое упражнение.
- •Безусловный выход из цикла.
- •Цикл While…Wend
- •Цикл For…Next
- •Практическое упражнение.
- •Контрольные вопросы.
- •Лабораторная работа №4. Массивы. Задание собственных типов данных.
- •Многомерные массивы
- •Задание собственных типов данных
- •Область определения и время жизни переменных
- •Практическое упражнение.
- •Использование окна свойств объекта.
- •Создание форм.
- •Размещение элементов управления в форме
- •Практическое упражнение.
- •Контрольные вопросы.
- •Лабораторная работа №6. Модель объектов Excel.
- •Использование объекта Application.
- •Использование семейства Workbooks.
- •Использование семейства Worksheets.
- •Использование объекта Range.
- •Практическое упражнение.
- •Контрольные вопросы.
Безусловный выход из цикла.
Цикл можно выполнить произвольное число раз, либо ни одного. Инструкция 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).
Перейдите в редактор VBA и откройте окно проекта, если до этого оно было закрыто.
Отобразите окно модуля.
В окне модуля введите следующую процедуру:
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