Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 6(VBA).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.03 Mб
Скачать

Использование констант

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

Существует две разновидности констант: встроенные и поль­зовательские. Встроенные константы Visual Basic предлагаются самой системой и предназначены для хранения самой разнооб­разной информации: коды "горячих" клавиш, используемые цве­та и т. д. Все они имеют префикс vb, например: vbWhite.

Для того чтобы уточнить значение той или иной встроенной константы, а также ее название, следует открыть окно Object Browser, в котором можно найти всю необходимую информацию (см. рис. 6.15). Для этого необходимо или нажать соответствую­щую кнопку на стандартной панели инструментов, или выбрать команду Object Browser в меню View, или нажать клавишу F2.

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

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

Const константа [As тип] = значение

В этом операторе:

Const - ключевое слово, которое показывает, что осуществ­ляется объявление константы;

420

As - ключевое слово для обозначения типа данных объявляе­мой константы;

Константа - имя описываемой константы;

Тип - тип данных для объявляемой константы;

Значение - присваиваемое константе значение указанного типа. Ниже приведены примеры объявления констант различных

типов:

Const bInFlag As Boolean = False

Const intMax As Integer = 1024

Const stxMessage = "Завершение работы"

При помощи одного оператора можно объявить несколько констант, в этом случае они должны быть перечислены через за­пятую, например:

Const intMin = 0, intMax = 1000

При объявлении констант их область видимости задается ана­логично переменным. Если константа была создана в процедуре,

421

то областью ее видимости является только эта процедура. В слу­чае необходимости доступа к константе из всех процедур модуля ее нужно объявлять в разделе Declarations данного модуля, ука­зывая в начале оператора ключевое слово Private. Если же требуется обеспечить доступ к константе из всех процедур про­екта, то при ее объявлении в разделе Declarations следует исполь­зовать ключевое слово Public. Например:

Private Const intMax = 4096 Public Const intMin = 1024

Типы данных Object и Variant

Тип Object.

В том случае, когда необходимо работать с различными объ­ектами, удобно использовать тип Object (объектный). Пере­менная данного типа содержит ссылку на тот или иной объект разрабатываемого приложения или других приложений и пред­ставляет собой 4-байтный адрес соответствующей области памя­ти. Присвоение объектной переменной какого-либо значения выполняется при помощи оператора Set. Например:

Dim objA As Object Set objA = Labell

В приведенном примере переменной objA присваивается ссылка на объект-метку Labell, принадлежащий одному из стандартных классов Visual Basic, а именно: классу Label. В подобных случаях, когда для описания объекта используется не созданный разработчи­ком, а уже имеющийся класс, при объявлении переменной следует указывать стандартный тип:

Dim objA As Label objA = Labell

Перечень стандартных классов Visual Basic, а также их описа­ние и список свойств каждого класса можно найти в разделе Classes окна Object Browser (см. рис. 6.16).

422

Тип Variant.

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

Dim vntAny ' Tim Variant

vntAny = "144" ' Результат: строка "144"

vntAny = vntAny /12 ' Результат: число 12

Однако следует учитывать тот факт, что в случае выполнения арифметических операций в переменной типа Variant должно находиться число (или строка, содержащая число), иначе при ра­боте программы возникнет ошибка несовпадения типов Type Mismatch.

Значение, которое присваивается переменной типа Variant, определяет способ его обработки при выполнении различных

423

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

Dim vntA ' тип Variant/Empty vntA = "5" ' тип Variant/String vntA = 5 ' типVariant/Integer vntA =5.5 ' тип Variant/Double

Для того чтобы узнать, какое внутреннее представление упот­ребляется для того или иного значения, следует использовать функцию VarType, которая возвращает числовые коды в зави­симости от применяемого типа данных (см. табл. 6.8).

Например:

Dim vntA

Dim intCode As Integer

vntA = "7"

intCode = VarType(vntA) ' intCode = 8

424

В зависимости от полученного кода можно выполнять те или иные действия. Например, целочисленные значения в перемен­ных Variant хранятся как Integer. Если какое-либо из этих значений не выходит за пределы интервала, определяемого типом Byte, т. е. [0; 255], то для экономии памяти и повышения скоро­сти обработки можно осуществить преобразование к более ком­пактному типу (см. табл. 6.9):

Dim vntA ' Variant

vntA = 200 ' Variant/Integer

If VarType(vntA) = 2 Then

vntA = CByte(vntA) ' Variant/Byte

End If

Зачастую при работе приложений необходимо преобразовывать содержимое переменных Variant из строки в число, например, при вводе пользователем данных в диалоговом окне, однако в этом случае может возникнуть ошибка несовпадения типов. Чтобы про-

425

верить, является ли преобразуемое значение числом (или строкой, которую можно представить как число), следует использовать функ­цию IsNumeric, которая возвращает значение True или False, в зависимости от результата проверки (см. табл. 6.10). Обычно IsNu-meric используется в управляющих конструкциях, как и рассмот­ренная выше функция VarType.

Помимо того, что переменные типа Variant могут хранить значения любого другого типа, для них предусмотрены еще три специальных значения:

Empty. Данное значение в начале выполнения программы ав­томатически присваивается переменной, объявленной как Variant, причем оно может трактоваться по-разному, в зависи­мости от того, в каком выражении присутствует рассматриваемая переменная. Если она используется при выполнении арифметиче­ской операции, то значение Empty эквивалентно нулю, т. е. О, если в строковом выражении - то пустой строке, т. е. "". Для того чтобы выяснить, содержит ли переменная типа Variant значе­ние Empty, следует использовать функцию IsEmpty, например:

Dim vntA ' vntA = Empty If IsEmpty(vntA) Then vntA = "" ' vntA = ""

Данное значение может быть присвоено в программе пере­менной типа Variant так же, как и любое другое, например:

vntA = Empty

426

Null. Это значение в большинстве случаев применяется при обработке баз данных и имеет несколько особенностей:

• если в каком-либо выражении одним из составляющих яв­ляется Null, то результатом всего выражения также будет Null, например:

Dim vntA ' vnfcA = Empty vntA = Empty + Null * 5 ' vntA = Null

• в том случае, когда в качестве параметра функции исполь­зуется значение Null или переменная, которая равна Null, то вызываемая функция также возвратит значение Null (если этот параметр принимает участие в вычисле­нии результата функции).

Проверка на значение Null переменной типа Variant осу­ществляется функцией IsNull, которая аналогична функции IsEapty, рассмотренной выше.

Данное значение может быть присвоено только переменной типа Variant, например:

Dim vntA vntA = Null

Если же значение Null будет присвоено переменной другого типа, то компилятор выдаст сообщение об ошибке.

Error. Данное значение применяется в том случае, если не­обходимо предусмотреть возможность возникновения ошибки в используемой процедуре. При этом компилятор не выдает стан­дартных сообщений об ошибке, что позволяет разработчику при ее возникновении выполнять те или иные действия по своему усмотрению. Преобразование полученного кода ошибки в Error осуществляется с помощью функции CVErr, аргументом кото­рой является числовое значение.