Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Макросы.doc
Скачиваний:
28
Добавлен:
21.11.2018
Размер:
16.91 Mб
Скачать

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

Теперь, когда вы знакомы с типами данных, которые могут принимать переменные, можно приступать к созданию переменных. Для этого используется оператор Dim. Создание переменной называется объявлением переменной (declaring variable).

Оператор Dim имеет следующий синтаксис:

Dim имяпеременной As типданных

Здесь имяпеременной обозначает имя создаваемой переменной. Правила именования переменных совпадают с правилами задания имен процедурам, типданных - один из типов данных, приведенных в табл. 4.1.

Имя переменной должно начинаться с буквы и может содержать буквы, цифры и другие символы. Имя не может содержать пробелы, точки, запятые, восклицательные знаки (!) и символы @, &, $, #. Имя должно состоять не более чем из 255 символов.

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

  1. Создайте новую процедуру под именем ЗнаюВашеИмя.

  2. Введите код процедуры

Dim sName As String

sName = InputBox(“Введите ваше имя: “)

MsgBox “Привет, “ & sName

Полный код процедуры должен иметь следующий вид

Public Sub ЗнаюВашеИмя()

 Dim sName As String

 sName = InputBox(“Введите ваше имя: “)

 MsgBox “Привет, “ & sName

End Sub

Отступы и пустые строки в тексте процедуры не обязательны, но желательны, так как облегчают чтение кода.

  1. Нажмите клавишу <F5> для выполнения процедуры. На экране появится окно ввода (рис. 4.7).

  2. Введите свое имя и нажмите клавишу <Enter>. Окно ввода закроется, и появится окно сообщения, содержащее ваше имя (рис. 4.8).

  3. Щелкните на кнопке ОК. Вы вернетесь в редактор Visual Basic.

Рис. 4.7. Теперь переменная сохранит введенное имя

Рис. 4.8. Окно сообщения использует значение переменной, содержащей ваше имя

Вы не обязаны указывать тип данных в операторе Dim. Если не указан тип данных, то по умолчанию VBA применит тип Variant. Обычная реакция на такое сообщение: "Здорово! Пусть VBA делает всю работу - я могу не беспокоиться о типе данных". Большое заблуждение! Вы должны определять типы данных. И для этого существует много причин. Первая очевидная причина заключается в расточительстве ресурсов памяти данными типа Variant. Ни один тип данных не требует 16 или 22 байт для сохранения значений переменной - убедитесь в этом, просмотрев табл. 4.1. Другая, не совсем очевидная, но не менее важная, причина состоит в том, что VBA по-разному обрабатывает данные разных типов. Поэтому, не объявляя тип данных, вы можете получить результат, отличающийся от ожидаемого. Кроме того, в добавок к сказанному, время выполнения процедур VBA также зависит от объявленных (или необъявленных) типов данных. В качестве значимости объявления типов данных я часто привожу своим студентам следующий наглядный пример.

  1. Создайте новую процедуру с названием ПримерПеременных.

  2. Введите следующий код процедуры:

Dim StartTime

Dim EndTime

Dim i

Dim j

StartTime = Now()

For i = 1 To 5000000

 j = i + 1

Next i

EndTime = Now()

MsgBox “Начало выполнения: “ & StartTime & _

 vbNewLine & "Конец выполнения: “ & EndTime

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

  1. Нажмите клавишу <F5> для выполнения процедуры. Выполнение этой процедуры займет несколько секунд. На моем компьютере эта процедура выполнялась не менее 4 секунд. Возможно, ваш компьютер более быстрый, чем мой, и выполнение процедуры занимает менее 4 секунд, в этом случае замените число 5000000 на 10000000. Запомните длительность выполнения процедуры.

  2. Щелкните на кнопке ОК, чтобы закрыть окно сообщения.

  3. Измените код процедуры следующим образом:

Dim StartTime As Date

Dim EndTime As Date

Dim i As Long

Dim j As Long

StartTime = Now()

For i = 1 To 5000000

 j = i + 1

Next i

EndTime = Now()

MsgBox “Начало выполнения: “ & StartTime & _

 vbNewLine & “Конец выполнения: “ & EndTime

  1. Снова нажмите клавишу <F5> для выполнения процедуры. Сравните время выполнения процедуры теперь и ранее - оно уменьшилось по крайней мере в два раза.

  2. Щелкните на кнопке ОК, чтобы закрыть окно сообщения.