Область видимости подпрограмм и функций 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Область видимости подпрограмм и функций



У подпрограмм и функций только два уровня видимости — модуля и проекта. По умолчанию все программы доступны на уровне проекта, то есть их можно вызывать из любого модуля проекта. При желании Вы можете объявлять такие программы с ключевым словом Public:

Public Sub ПрограммаУровняПроекта()

Dim Var1 As Integer

Var1 = 1

MsgBox AddOne(Varl)

End Sub

Public Function AddOne(ByRef Var1)

AddOne = Var1 + 1

End Function

Поскольку все программы по умолчанию доступны на уровне проекта, слово Public используется в основном для того, чтобы яснее отделить их от программ уровня модуля. Если Вы опустите слово Public, никаких изменений не произойдет.

Чтобы перевести подпрограмму или функцию на уровень модуля, объявите ее с ключевым словом Private. Помните, что такие программы не могут запускаться сами по себе. Их можно только вызывать из других программ. Это иллюстрируется следующим примером.

Sub ВызовПрограммыУровняМодуля()

Var1 = GetRand

ПрограммаУровняМодуля Var1

End Sub

Private Sub ПрограммаУровняМодуля (ByVal Var1)

MsgBox Var1 * GetRand

End Sub

Private Function GetRand()

GetRand = Int(100 * Rnd())

End Function

Сначала программа ВызовПрограммыУровняМодуля вызывает функцию GetRand для генерации случайного целого числа от 0 до 99, а затем передает его в подпрограмму ПрограммаУровняМодуля. Там этот аргумент умножается на результат еще одного обращения к GetRand. Их произведение выводится в информационном окне.

Сохраняемые подпрограммы и функции

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

Sub ВызовСтатическойПодпрограммы()

СтатическаяПодпрограмма

СтатическаяПодпрограмма

End Sub

Static Sub СтатическаяПодпрограмма()

Dim Var1 As String

If Var1 = "" Then

Var1 = "Var1 ещё не статическая переменная "

Else

Var1 = " Var1 – статическая переменная."

End If

MsgBox Var1

End Sub

Переменная Var1 определяется и получает значение в программе СтатическаяПодпрограмма. Она является сохраняемой поскольку подпрограмма определена с ключевым словом Static. Программа СтатическаяПодпрограмма вызывается дважды, оба раза выводит на экран информационное окно, где во второй раз подтверждает, что значение Var1 действительно сохранилось.

Управляющие структуры

Управляющие структуры VBA эквивалентны подобным структурам в других языках программирования, за исключение инструкции For- Each- Next.

 Ниже перечислены основные управляющие структуры VBA.

If-Then-Else Выполняет группу инструкций, если соблюдено некоторое условие
Select Case В зависимости от значения некоторой переменной или результата проверки условия выполняет одну из нескольких возможных групп инструкций
For-Next Выполняет группу инструкций заданное число раз
For-Each-Next Выполняет действие над каждым объектом семейства или элементом массива
While-Wend Выполняет группу инструкций, пока соблюдается некоторое условие
Do-Loop Выполняет группу инструкций, пока соблюдается или не соблюдается некоторое условие

Функционально они делятся на две группы:

§ перехода и выбора (GoTo, If-Then-Else, Select Case)

§ повтора (For-Next, While-Wend, Do-Loop, For-Each-Next)

Рассмотрим подробнее действие этих структур.

Управляющая инструкция If-Then-Else

Условная инструкция If- Then- Else изменяет порядок выполнения программы в зависимости от результатов проверки некоторого условия.

Sub IfThenElse()

Dim Num1 As Integer

Num1 = GetRandomNumber

If Num1 = 7 Then

MsgBox "Поздравляю! Вы выиграли! Выпало число " &

Num1 & "."

Else

MsgBox "Сожалею, но Вы проиграли. Выпало число " & _

Num1 & "."

End If

End Sub

Function GetRandomNumber()

GetRandomNumber = Int(10 * Rnd())

End Function

В процедуре IfThenElse вызов функции GetRandomNumber присваивает переменной Num1 случайное значение от 0 до 9. Затем в инструкции If происходит проверка условия: Num1 = 7. Если результат проверки равен True (Num1 равно 7), на экран выводится информационное окно с сообщением о выигрыше.

Если результат проверки равен False (Num1 не равно 7), на экран выводится другое окно — с сообщением о проигрыше.

Рассмотрим отдельные элементы инструкции If- Then- Else.

If Ключевое слово, отмечающее начало инструкции If- Then- Else
Num1 = 7 Условие для проверки. Первое условие всегда указано после ключевого слова If. Результатом проверки является одно из двух значений — True или False, которое и определяет порядок выполнения команд в инструкции If- Then- Else. Если условие соблюдено (True), управление передается инструкции, написанной сразу за ключевым словом If, следует до инструкции перед ключевым словом Else, а затем переходит к инструкции после ключевых слов End If. Если условие не выполнено (False), управление передается инструкции после ключевого слова Else и следует до ключевых слов End If
Then Ключевое слово, отмечающее конец условия
MsgBox "Поздравляю! Вы выиграли! Выпало число " & Num1 & "." Инструкция, выполняемая при положительном результате проверки
Else Ключевое слово, отмечающее конец блока инструкций, выполняемых при положительном результате проверки, и начало блока инструкций, выполняемых при отрицательном результате проверки
MsgBox "Сожалею, но Вы проиграли. Выпало число " & Num1 & "." Инструкция, выполняемая при отрицательном результате проверки
End If Ключевые слова, отмечающие конец инструкции If- Then- Else

 

В инструкции If- Then- Else ключевое слово Else и следующий за ним блок инструкций не являются обязательными. Если эти элементы отсутствуют, при отрицательном результате проверки управление передается инструкции, стоящей после ключевых слов End If.



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 43; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.210.17 (0.006 с.)