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

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

Жанры

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

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

Шрифт:

Использование переменных в операторах присваивания

Можно присваивать переменным не только буквальные значения - точно так же можно присваивать и значения, определяемые другими переменными. В операторе curSalePrice = curCost * sngMargin переменной curSalePrice присваивается значение, равное произведению переменных curCost и sngMargin. В данном случае выражение состоит из переменных, а не из буквальных значений. VBA вычисляет результат на основе значений, хранящихся в этих переменных. (Кстати, в полном соответствии с рекомендованными в главе 6 соглашениями по выбору имен, curSalePrice и curCost являются переменными типа Currency.)

Использование функций в операторах присваивания

Поскольку функции и создаваемые вами процедуры типа Function возвращают значения, их тоже можно использовать в операторах присваивания. Например:

ctrFavorite = InputBox(Кто сегодня фаворит?)

В данном случае используется функция VBA Input Box, которая отображает на экране небольшое диалоговое окно с указанным сообщением и полем для ввода ответа пользователем. Этот ответ и будет возвращаемым функцией значением, представляющим собой строку текста (функция Input Box рассматривается подробно в главе 11).

Выражен-и-я

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

* переменные (например, bytMonth или boolWinter );

* буквальные значения (например, 1234 или Это только пример);

* константы (они предназначены для хранения буквальных значений и рассматривают; ся в разделе 'Работа с постоянными значениями);

* функции VBA (например, Input Box или Sqr );

* процедуры типа Function.

Если в выражении не меньше двух таких элементов, то они должны быть связаны либо знаками операций (к последним относится, например, знак +), либо функциями и процедурами типа Function, вложенными внутрь других функций и процедур типа Function.

Обратите внимание на то, что если выражение состоит из нескольких компонентов, то каждый из них тоже будет выражением со своим собственным значением.

Что содержит переменная перед тем, как ей присваивается значение?

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

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

Вот какие значения хранятся в переменных перед тем, как вы им присваиваете свои значения.

Тип данных

Начальное значение

Все числовые типы данных

О

string (переменной длины)

Строка нулевой длины

string (фиксированной длины)

Строка указанной длины, состоящая из символов, ASCIIкод которых равен 0 (эти символы невидимы на экране)

Variant

Пусто (специальное значение, указывающее на то, что переменная этого типа не хранит никакого значения)

Object

Ничто (специальное значение, указывающее на то, что переменной не присвоено никакой ссылки на объект)

Работа с постоянными значениями

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

Объявление констант

Для объявления констант используется ключевое слово Const:

Const cstrPetsName As String = "Пушок"

Const cDateTarget Date As Date = #5/26/2000#

Const cboolUp As Boolean = True

Все вполне аналогично объявлению переменных, за исключением того, что при объявлении константы необходимо указать ее значение. При объявлении констант можно указывать те же типы данных, что и для переменных, за исключением типа Object, пользовательского типа данных и пока что типа Decimal (см. табл. 7.1).

Обратите внимание, что имена объявленных мною констант начинаются со строчной буквы "с" (означающей сокращение от constant - константа). Таким образом, по имени сразу видно, что это константа, а не переменная. Если вас этот префикс не устраивает, выберите для своих констант другой, более подходящий вам.

Вы можете последовать примеру VBA и Visual Basic и выбрать префикс, соответствующий вашему имени, или префикс, соответствующий имени вашего VBA-проекта. VBA и Visual Basic идентифицируют константы с помощью префикса vb - например vbBl ue (константа, представляющая числовой код для синего цвета, а именно 16711680) или vbKeyTab (константа, представляющая числовой код клавиши <Tab>, а именно 9). VBA приложения часто идентифицируют свои константы с помощью префикса, специфического для этого приложения, например xlBarStacked (константа, представляющая числовой код для линейчатой диаграммы в Excel, а именно 58).

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

Плоды использования констант

Объявив константу, вы получаете возможность использовать ее везде, где в программе потребуется представленное именем этой константы буквальное значение. Скажем, вы создаете программу, которая должна определять зарплату работника в зависимости от размера его обуви.

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

Я еще князь. Книга XX

Дрейк Сириус
20. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще князь. Книга XX

Легат

Прокофьев Роман Юрьевич
6. Стеллар
Фантастика:
боевая фантастика
рпг
6.73
рейтинг книги
Легат

Младший сын

Балашов Дмитрий Михайлович
1. Государи московские
Научно-образовательная:
история
8.50
рейтинг книги
Младший сын

Запечатанный во тьме. Том 2

NikL
2. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 2

Барон нарушает правила

Ренгач Евгений
3. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон нарушает правила

Кодекс Охотника. Книга IV

Винокуров Юрий
4. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга IV

Око василиска

Кас Маркус
2. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Око василиска

Казань

Вязовский Алексей
2. Русский бунт
Фантастика:
альтернативная история
4.50
рейтинг книги
Казань

Курс 1. Октябрь

Фокс Гарри
2. Маркатис
Фантастика:
аниме
фэнтези
сказочная фантастика
5.00
рейтинг книги
Курс 1. Октябрь

Проданная Истинная. Месть по-драконьи

Белова Екатерина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Проданная Истинная. Месть по-драконьи

Черный рынок

Вайс Александр
6. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Черный рынок

Я уже царь. Книга XXIX

Дрейк Сириус
29. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я уже царь. Книга XXIX

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

Запечатанный во тьме. Том 1. Тысячи лет кача

NikL
1. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 1. Тысячи лет кача