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

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

Основная наша цель на данном этапе - это познакомиться с редактором VBA и научиться создавать процедуры, расширяющие возможности основного приложения.

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

В этом случае последовательность наших действий будет следующей:

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

  2. Выделите в окне проекта объект Лист1 и нажмите правую клавишу мыши. В контекстном меню выбираем пункт Программа. На экране активизируется окно модуля.

  3. В левом верхнем списке этого окна выбираем объект Worksheet, в правом - событие Activate. Т. е. тем самым мы определили, что данная программа выполнится в том случае, когда будет сделана попытка перейти на Лист1 рабочей книги. Окно модуля примет вид, как на рис. 1.3.

Р ис. 1.3

  1. Введем следующую программу:

Private Sub Worksheet_Activate()

Dim password As String

password = InputBox("Введите пароль для доступа к листу")

If password <> "nowhow" Then Sheets("Лист2").Select

End Sub

Если теперь в приложении Microsoft Excel активизировать какой-либо рабочий лист, а затем вновь попробовать вернуться на Лист1, перед нами возникнет диалоговое окно, в которое мы должны будем ввести пароль. В случае неправильного ввода, активным становится Лист2.

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

  1. Запуск редактора VBA, окно проекта, окно модуля.

  2. Структура программы на VBA.

  3. Синтаксис описания функций.

  4. Добавление процедуры или функции в проект.

  5. Запуск пользовательской процедуры или формы.

  6. Типы переменных.

Лабораторная работа №2. Инструкции управления порядком выполнения команд.

Цель: Научиться правильно использовать инструкции управления порядком выполнения команд

Обычно процедура VBA выполняет инструкцию Sub или Function, а затем все последующие инструкции до тех пор, пока не достигнет утверждения End Sub или End Function. Во многих случаях этого достаточно. Если затем снова запустить макрос, то повторно выполняется та же последовательность записанных действий.

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

Инструкция If…Then…Else

Инструкция If…Then…Else выполняет определенные команды или наборы команд в зависимости от значения условия. Данную инструкцию можно записать в одну или несколько строк.

Инструкция If, записанная в одну строку, имеет следующий синтаксис:

If условие Then [инструкции] [Else инструкции_else]

Параметр условие - логическое выражение, которое возвращает значение True или False. Если выражение равно True, то выполняются инструкции, а часть Else игнорируется. Если условие равно False, то игнорируются инструкции, а выполняются утверждения инструкции_else. Если же часть Else опущена и логическое условие равно False, то не выполняется ни одна из инструкций и управление передается следующей строке программы после инструкции If.

Описанная форма условного оператора используется при обработке простых логических условий, например:

If Sales > 15000 Then Comission=0.08 Else Comission=0.05

В данном примере если сумма продаж больше 15000 грн., то комиссионные устанавливаются на уровне 8 процентов. В противном случае, взимается 5 процентов.

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

If условие Then

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

[ElseIf условие-n Then

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

[Else

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

End If

Многострочная структура удобнее. Каждая группа инструкций может включать произвольное число утверждений. Приведем пример программы, в которой используется многострочный синтаксис инструкции If:

If Sales > 15000 Then

Commission = 0.08

Rating = "Отлично"

AnnualSales = AnnualSales + Sales

Else

Commission = 0.05

Rating = "Средне"

AnnualSales = AnnualSales + Sales

End If

Необязательная часть ElseIf используется для задания дополнительных условий в той же структуре:

If Sales > 15000 Then

Commission = 0.08

Rating = "Отлично"

ElseIf Sales > 12000 Then

Commission = 0.07

Rating = "Хорошо"

ElseIf Sales > 9000 Then

Commission = 0.06

Rating = "Удовлетворительно"

Else

Commission = 0.05

Rating = "Неудовлетворительно"

End If

AnnualSales = AnnualSales + Sales

При использовании инструкции If следует обратить внимание на следующие особенности:

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

  • В многострочной структуре каждой инструкции If должна соответствовать своя инструкция End If. В однострочном синтаксисе инструкции End If не имеется.

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