ТОП 10:

Переменные, типы данных и константы



Главное предназначение VB А — обработка данных. Некоторые данные сохраняются в объек­тах, например, диапазонах рабочих листов. Другие данные хранятся в созданных вами переменных.

Переменнаяпредставляет собой именованное место хранения данных в памяти компью­тера.

Переменные могут содержать данные разных типов— от простых логических, или бу­левых, значений ( True или False ) до больших значений с двойной точностью (см. следующий раздел).

Значение присваивается переменной с помощью оператора равенства (подробнее об этом — далее в главе).

VBA поддерживает несколько огра­ничений в именовании переменных:

  • Можно использовать в названиях символы букв, числа и некоторые знаки препи­нания, но первой в имени переменной всегда должна вводиться буква.
  • VBA не различает регистры.
  • Нельзя использовать в именах пробелы или точки.
  • Чтобы сделать имена переменных удобочитаемыми, используют смешанный регистр (например, InterestKate , а не interestkate ) или вводят символ подчеркивания ( lnterest _ Rate ).
  • Специальные символы объявления типов (#, $,%, & или !) не применяются в имени переменной.
  • Названия переменных ограничены длиной 254 символов.
  • Не допускается применять в качестве названий переменных или процедур зарезервированные слова,т.е. такие слова, которые используются VBA .

Определение типов данных

  • Тип данных указывает, в каком виде данные хранятся в памяти: как целые значения, дей­ствительные числа, текст н т.п.
  • VBA может автоматически типизировать данные, что приводит к медленному выполнению операций и не эффективному использованию памяти.
  • При явном объявлении типа данных всех используемых пе­ременных VBA может выполнять дополнительную проверку ошибок на эта­пе компиляции.
  • При явном объявлении типа данных программа работает быстрее и занимает меньше места в оперативной памяти.
  • Чтобы обеспечить обязательное объявление всех используемых переменных, необходимо включить строку
    Option .Explicit
    в качестве первой инструкции в модуле VBA .

В таблице перечислены поддерживаемые в VBA типы данных

Тип данных Резервируется байт Наименьшее значение Наибольшее значение
Byte
Boolean False (Ложь) True (Истина)
Integer -32768
Long -2147483648
Single -3.402823 Е38 -1.401298 Е-45
1.401298Е-45 3.402823Е38    
Double -1,79769313486232Е308 -4,94065645341247Е-324
4,94065645841247Е-324 1,79769313486232Е308    
Currency -922337203685477,5808 922337203685477,5807
Decimal +/-79228162514264337593543950335 без десятичных знаков +/-7,9228162514264337593543950335 с 28-ью знаками после запятой
Date 1 января 100 года 31 декабря 9999 года
Object Любая ссылка на объект
string (пере­менной длины) 10 байт + длина строки приблизительно 2 млрд
string (фикси­рованной длины) Длина строки
Variant (числа) Любое числовое значение в рамках диапазона типа данных Double
Variant (сим­волы) 22 байта + длина строки   приблизительно 2 млрд
Пользовательский Зависит от типа Зависит от элемента
  • Чтобы в тексте программы распознать тип данных переменной или константы можно использовать стандартную приставку (префикс) в нижнем регистре в названии переменной в соответствии с приведенной таблицей.
Префикс Типданных
b Boolean
i Integer
l Long
s Single
d Double
с Currency
dt Date / Time
str String
obj Object
v Variant
u Пользовательский

Объявление переменных

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

Sub VariantDemo ()

MyVar = "123"

MyVar = MyVar / 2

MyVar = "Ответ: " & MyVar

MsgBox MyVar

End Sub

  • При обработке типа дан­ных Variant могут возникнуть проблемы.
    Пример 2. Какое сообщение выдаст следующая процедура?

Sub VariantDemo 2()

MyVar = "123"

MyVar = MyVar + MyVar

MyVar = "Ответ: " & MyVar

MsgBox MyVar

End Sub

Функция определения типа данных

Для определения типа данных переменной используется функция VBA TypeName .

Пример 1.

Sub VariantDemo2()

MyVar = "123"

MsgBox TypeName(MyVar)

MyVar = MyVar / 2

MsgBox TypeName(MyVar)

MyVar = "Ответ: " & MyVar

MsgBox TypeName(MyVar)

MsgBox MyVar

End Sub

Тестирование явного объявления типов данных

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

Sub TimeTestU

Dim x As Integer, у As Integer

Dim A As Integer, В As Integer, С As Integer

Dim i As Integer, j As Integer

Dim StartTime As Date, EndTime As Date

' Сохранение времени начала вычислений

StartTime = Timer

' Выполнение вычислений

х = 0

у = 0

For i = 1 То 5000

For j = 1 То 1000

А = х + у + i

В = у - х - i

С = х - у - i

Next j

Next i

' Получение времени окончания вычислений

EndTime = Timer

' Отображение общего времени

MsgBox Format(EndTime – StartTime)

End Sub

Задача.

Сравните время выполнения этой программы и время выполнения этой же программы при превращении операторов Dim в комментарии.

 

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

Область действияпеременной определяет, в каких модулях и процедурах она может ис­пользоваться. Существуют следующие типы областей действия переменных.

Область действия Способ объявления переменной
Отдельная процедура В процедуру включается оператор Dim или static
Отдельный модуль Перед первой процедурой в модуле вводится оператор Dim или private
Все модули Перед первой процедурой в модуле вводится оператор Public

Локальные переменные

  • Локальная переменная— это переменная, объявленная в процедуре.
  • Локальные перемен­ные могут использоваться только в процедуре, в которой они объявлены.
  • После выполнения процедуры переменная становится невостребованной, поэтому Excel освобождает соответст­вующую область памяти.
  • Если требуется сохранить значение переменной, объявите ее как static .
  • Чтобы объявить локальную переменную — вставьте оператор Dim между операторами Sub и End Sub .
  • Dim – сокращение от Dimension (Размерность).В старых версиях BASIC этот оператор использовался исключительно для объявления размерности массива.
  • Другой способ указания типа данных для переменной : язык VBA позволяет присоединить символ к на­званию, чтобы указать ее тип данных.
    Пример, можно объявить пере­менную MyVar как целое число, добавив к ее названию символ %: Dim MyVar %
  • Символы объявления типов данных представлены для большинства типов данных VBA (отсутствующие в таблице типы данных не имеют собственного символа объявления типа).
Тип данных Символ объявления типа
Integer %
Long &
Single !
Double #
Currency @
String S

• Локальные переменные позволяют экономно использовать память, так как VBA освобождает память, которую они используют, после окончания выполнения процедуры.

Переменные уровня модуля

Иногда необходимо, чтобы переменная была доступна во всех процедурах модуля. В та­ком случае объявите переменную передпервой процедурой модуля (за пределами процедур или функций).

В приведенном ниже примере оператор Dim — первая инструкция в модуле. Обе проце­дуры MySub и YourSub имеют доступ к переменной CurrentValue .

Dim CurrentValue As Integer

Sub MySub{)

' -[Здесь вводится текст процедуры] -

End SUb

Sub YourSub()

'-[Здесь вводится текст процедуры] -

End Sub

Значение переменной уровня модуля не изменяется при окончании выполнения процедуры.

Переменные Public

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

Public CurrentRate as Long

Код объявления пере­менных Public должен вводиться в стандартном модуле VB А, а не в коде модуля листа или формы.

Переменные Static

Переменные Static — особый случай. Они объявляются на уровне процедуры и сохра­няют свое значение после окончания процедуры.

Sub MySub()

Static Counter As Integer

'-[Здесь вводится текст процедуры] –

End Sub

Работа с константами

Константа– имено­ванное значение или строка, которая не меняется при выполнении программы.

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

Константы объявляются с помощью оператора Const .

Примеры:

Const NumQuarters as Integer = 4

Const Rate = .0725, Period = 12

Const ModName as String = "Budget Macros"

Public Const AppName as String = "Budget Application"

Во втором примере тип данных не объявлен. Следовательно, указанные две константы имеют тип Variant .

Константы имеют область действия как и переменные.

Область действия Способ объявления константы
Отдельная процедура В процедуре или функции
Отдельный модуль Перед первой процедурой в модуле
Все модули Перед первой процедурой в модуле с ключевым словом Public

При попытке изменить значение константы в процедуре VBA вы получите ошибку.







Последнее изменение этой страницы: 2016-08-16; Нарушение авторского права страницы

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