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

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

Напишем программу, которая по введенному названию месяца выводит количество дней в этом месяце, используя инструкцию Select Case.

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

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

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

Public Sub Месяцы()

Dim Month As String

Dim Day As String

Month = InputBox("Введите название месяца")

Select Case Month

Case "Январь", "Март", "Май", "Июль", _

"Август", "Октябрь", "Декабрь"

Day = "31"

Case "Апрель", "Июнь", "Сентябрь", "Ноябрь"

Day = "30"

Case "Февраль"

Day = "28 или 29"

Case Else

Day = "Ошибка ввода"

End Select

MsgBox Month & " - " & Day

End Sub

Знак подчеркивания ( _ ) в тексте программы используется тогда, когда строка программы выходит за пределы экрана, для упрощения восприятия текста.

Контрольные вопросы.

  1. Правила записи инструкции If…Then…Else. Многострочная структура

  2. Правила записи инструкции Select Case, параметры.

  3. Логические операции.

  4. Инструкция безусловного перехода.

  5. Правила записи инструкции

Лабораторная работа №3.

Операторы цикла.

Цель: Научиться использовать операторы цикла для организации повторяющихся вычислений

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

Цикл Do…Loop

Цикл Do…Loop является одним из самых простых и удобных. Он имеет 4 варианта синтаксиса:

  • Синтаксис 1:

Do While условие

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

Loop

  • Синтаксис 2:

Do Until условие

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

Loop

  • Синтаксис 3:

Do

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

Loop While условие

  • Синтаксис 4:

Do

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

Loop Until условие

Команды между инструкциями Do и Loop выполняются заданное число раз. Рассмотрим примеры использования цикла Do…Loop, начиная с синтаксиса 1:

Counter = 100

Do While Counter > 0

Call MySub

Counter = Counter - 1

Loop

При вычислении условия в первый раз переменная Counter равна 100, поэтому выражение Counter > 0 (в данном случае 100 > 0) истинно, и выполняются инструкции внутри цикла. В цикле вызывается подпрограмма, а затем переменная Counter уменьшается на 1, поэтому в следующий раз условие равно 99 > 0, и команды выполняются повторно. После ста повторений переменная Counter уменьшается до 0 и условие становится ложным. Цикл заканчивается и управление передается инструкции, которая следует за командой Loop.

Аналогичные действия можно произвести, используя синтаксис 2:

Counter = 100

Do Until Counter = 0

Call MySub

Counter = Counter - 1

Loop

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

Синтаксис 3 и 4 очень похожи на первые два за исключением того, что условие не выполнится до тех пор, пока цикл не выполнится один раз. В первых двух случаях если условие ложно при входе в цикл, то управление сразу передается команде, которая следует после инструкции Do…Loop. С помощью двух последних вариантов можно обеспечить, по крайней мере, однократное выполнение цикла. Рассмотрим пример использования синтаксиса 3:

Counter = 0

Do

Call MySub

Counter = Counter - 1

Loop While Counter > 0

В этом случае даже если счетчик цикла равен 0 перед входом в цикл, инструкции выполняются, по крайней мере, один раз, т. к. условие проверяется только в конце цикла.

При работе с циклами имеется опасность входа в бесконечный цикл, если значение заданного условия не может измениться. В этом случае цикл выполняется бесконечно или до прерывания пользователем работы макроса. При возникновении бесконечного цикла, нажмите комбинацию клавиш <Ctrl>+<Break>.