Чтение онлайн

на главную - закладки

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

По умолчанию переменные локальны

Ключевое слово Private работает точно так же, как и Dim. Например, следующие два оператора объявления функционально идентичны:

Private strLouie As String

Dim strLouie As String

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

Глобальное

знание

Объявление переменной с помощью ключевого слова Public делает эту переменную доступной из любой части проекта. Например:

Public intUnclassifield As Integer

Правда, такую особую силу ключевое слово Public имеет только тогда, когда вы объявляете переменную в разделе Declarations (Объявления) модуля. VBA не будет возражать и против использования Public внутри процедуры, но таким образом объявленные переменные все равно останутся невидимыми вне процедур, в которых заключаются объявления.

Статическое состояние

Ключевое слово Static в объявлении переменной следует использовать тогда, когда вы хотите, чтобы переменная оставалась в памяти, - для того чтобы использовать ее значение - даже когда процедура завершила свою работу. В следующем примере переменная intLasting Variable используется как счетчик числа вызовов данной процедуры:

Sub TransientProcedure

Dim strTransientVariable As String

Static intLastingVariable As Integer

strTransientVariable = Format(Now, Medium Time)

int LastingVariable = intLastingVariable + 1

MsgBox Сейчас strTransientVariable . _

Эта процедура выполнялась

intLastingVariable раз ( а ).

End Sub

В этом примере оператор intLastingVariable = intLastingVariable + 1 увеличивает значение переменной на единицу при каждом выполнении процедуры. Если переменную intLastingVariable объявить ключевым словом Dim, а не Static, то в начале каждого выполнения процедуры эта переменная получала бы нулевое значение, что лишало бы процедуру всякого смысла вообще.

Объявлять переменные ключевым словом Static (статические переменные) можно только внутри процедур. Если вы хотите, чтобы все переменные в некоторой процедуре сохраняли свои значения (даже когда процедура не выполняется), поместите ключевое слово Static в объявление самой процедуры непосредственно перед ключевым словом, определяющим тип процедуры (т.е. перед Sub или Function), например;

Private Static Sub DoIt All

Static Function DontDoVeryMuch(intTimeToWaste As Integer)

Обратите внимание, если в объявлении процедуры присутствует задающее область видимости ключевое слово Private (или Public), то Static идет после него.

Объявление нескольких переменных в одной строке

В одной строке программного кода можно объявить и несколько переменных. Ключевое слово Dim печатается при этом только один раз, а переменные разделяются запятыми.

Но не забывайте указать тип данных для каждой из переменных в объявлении, даже если все эти переменные

одного типа. Вот пример правильно оформленного оператора этого типа:

Dim intA As Integer, intD As Integer, intL As Integer

Смешивать различные типы данных тоже разрешается:

Dim curNetWorth As Currency, datSecondTuesday As Date

При объявлении нескольких переменных в одной строке возрастает вероятность случайного пропуска объявления типа данных. Для каждой из переменных в строке с пропущенным типом данных автоматически будет выбран тип Variant. Например, при обработке оператора

Dim strX, strY, strZ As String

strX и strY интерпретируются как переменные типа Variant, а не как строковые переменные.

Размещение информации в переменных

После того как переменная объявлена, первым шагом в ее использовании обычно бывает наполнение ее информацией (первое размещение информации в переменной называется инициализацией переменной). Чтобы поместить информацию в переменную, нужно присвоить значение информации этой переменной. Как только понадобится, можно заменить данные, хранящиеся в переменной, присвоив ей другое значение.

Присваивание значений

Значения переменным присваиваются с помощью обыкновенного знака равенства. Например, чтобы поместить число 3 в переменную с именем intC, напечатайте intC = 3

В VBA оператор присваивания представляет собой связанную знаком равенства конструкцию, с переменной слева от него и выражением, определяющим значение переменной, справа. В приведенном выше примере выражение представляет собой просто число 3. Такие явно указанные значения называются буквальными значениями. (Выражения будут обсуждаться ниже, в разделе Выражен-и-я.)

Взгляните на следующий оператор присваивания:

strQuot e = Не спрашивай, что я сделал для страны - _

спроси о том, что страна сделала для меня.

В данном случае оператор присваивает текст справа от знака равенства переменной strQuot e. Как и раньше, информация во входящем в этот оператор выражении представляет собой буквальные значения - реальный текст, помещаемый в переменную. Но оператор разбит на две строки, поэтому и текстовое выражение разбито на две отдельные строки. Знак (амперсанд) дает указание VBA соединить эти строки вместе.

Здесь я просто пытаюсь показать, что выражения часто имеют несколько компонентов.

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

Ясно, что до момента реального выполнения оператора присваивания его утверждение не является фактом. В математике равенством 2+2=4 на самом деле утверждается, что значение слева от знака равенства равно значению справа.

В VBA оператор присваивания заставляет переменную быть равной значению выражения. В дальнейшем новый оператор присваивания может изменить значение этой переменной в любое время.

Поделиться:
Популярные книги

Сын Тишайшего

Яманов Александр
1. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.20
рейтинг книги
Сын Тишайшего

"Искажающие реальность" Компиляция. Книги 1-14

Атаманов Михаил Александрович
Искажающие реальность
Фантастика:
боевая фантастика
космическая фантастика
киберпанк
рпг
5.00
рейтинг книги
Искажающие реальность Компиляция. Книги 1-14

Школа. Первый пояс

Игнатов Михаил Павлович
2. Путь
Фантастика:
фэнтези
7.67
рейтинг книги
Школа. Первый пояс

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!

Аргумент барона Бронина 4

Ковальчук Олег Валентинович
4. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 4

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Измена. Право на обман

Арская Арина
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на обман

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Жаба с кошельком

Донцова Дарья
19. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
8.26
рейтинг книги
Жаба с кошельком

Бастард Императора. Том 11

Орлов Андрей Юрьевич
11. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 11

Академия чаросвет. Тень

Ярошинская Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Академия чаросвет. Тень

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4