Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

Допустимые имена

Как и в других языках программирования, переменные, процедуры, константы и т.д. имеют свои имена.

В VBA действуют следующие ограничения на имена:

1. Длина имени не должна превышать 255 символов.

2. Имя не должно содержать точек, пробелов, и следующих символов: %, &,!, #, @, $.

3. Имя должно начинаться с буквы.

4. Имя не должно совпадать с ключевыми словами VBA и именами встроенных функций и процедур.

Для того чтобы сделать программу наглядной и легко читаемой, присваиваемые Вами имена должны отображать суть обозначаемого объекта. Для обозначения переменной, в которой будет храниться индекс учебного года, хорошим именем будет, например, УчГод, но не одиночный символ (например, x). А вот для обозначения переменной х в вычислениях, например, Sin(x), это обозначение является наилучшим.

Обратите внимание на использование верхнего регистра при именовании переменных и сравните два имени: Учгод и УчГод. Очевидно, что второе имя гораздо лучше читаемо, чем первое.

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

Типы данных переменных VBA

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

Boolean (2 байта) True или False
Byte (1 байт) Целое число без знака. Пределы: от 0 до 255
Currency (8 байт) Денежная единица. Применяется в вычислениях с фиксированной точкой, когда важна высокая точность. Пределы: от -922 337 203 685 477,5808 до 922 337 203 685 477,5807
Date (8 байт) Дата и время. Пределы: от 1 января 100 года до 31 декабря 9999 года
Double (8 байт) Действительное число двойной точности. Пределы отрицательных значений: от -1,79769313486232Е308 до -4,94065645841247Е-324. Пределы положительных значений: от 4,94065645841247Е-324 до 1,79769313486232Е308, а также ноль
Integer (2 байта) Целое число. Пределы: от -32 768 до 32 767
Long (4 байта) Целое число. Пределы: от -2 147 483 648 до 2 147 483 647
Object (4 байта) Объектная переменная для ссылки на любой объект Excel
Single (4 байта) Действительное число простой (одинарной) точности. Пределы отрицательных значений: от -3,402823Е38 до -1,401298Е-45. Пределы положительных значений: от 1,401298Е-45 до 3,402823Е38, а также ноль.
String (по байту на символ) Строка, содержащая от 0 до более чем 2 миллиарда символов
Variant (16 байт и по байту на символ, если переменная содержит строку) Переменная любого типа (за исключением пользовательского). Этот тип полезен, когда Вам нужно выделить память под величину, тип которой неизвестен
Пользовательский (зависит от описания) Подобен структуре или записи в других языках программирования. Позволяет хранить в одной переменной несколько значений различных типов

Описание переменной

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

Описание переменных - это необязательная процедура, но, выполнив ее, Вы существенно повысите производительность программы и облегчите ее отладку.

 Ниже приведен пример использования инструк­ции Dim для описания переменной:

Dim Var1 As Integer

В этой команде объявляется переменная Varl типа Integer. Это означает, что VBA выделил для нее 2 байтапамяти. В команде использованы три ключевых слова — Dim, As и Integer. Рассмотрим их подробнее.

Dim           Ключевое слово, начинающее описание переменной

Varl           Имя переменной

As              Ключевое слово, отделяющее имя переменной от типа данных

Integer      Тип данных

 

Ниже мы приводим еще несколько примеров описания переменных.

Dim Var2 As Double

Dim Var3 As Date

Dim Var4 As Currency

Dim Var5 As Variant

В одной инструкции Dim можно описать сразу несколько переменных, разделяя их запятыми и сопоставляя каждой из них ключевое слово As и тип данных, например:

Dim Var2 As Double, Var3 As Date, Var4 As Currency, Var5 As Variant

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

Теперь мы посмотрим, как это сделать в программе. В процедуре ЦелаяПеременная переменная Integer применяется для задания свойства Value объекта Range.

Sub ЗадатьПеременную()

Dim Num1 As Integer

Num1 = 5

Worksheets(1).Range("A1").Value = Num1

Worksheets(1).Select

End Sub

В третьей строке переменной Numl присваивается значение 5, которое сохраняется до завершения программы. В четвертой строке мы приравниваем свойство Value ячейки A1 первого рабочего листа переменной Num1. В программе ПрисвоитьЗначение приведен обратный пример — переменной Num1 присваивается значение из диапазона.

Sub ПрисвоитьЗначение()

Dim Num1 As Integer

Num1 = Worksheets(1).Range("A1").Value

MsgBox Num1

End Sub

Если Вы запустите эту программу в той же рабочей книге, что и ЦелаяПеременная, значение Num1 будет равно 5. В четвертой строке программы переменная использована для вывода значения в информационном окне.

Таким образом, программа ПрисвоитьЗначение отображает в окне значение свойства Value диапазона A1. Этого же результата можно добиться и не используя переменную, как продемонстрировано в следующем примере.

Sub БезПеременной()

MsgBox Worksheets(1).Range("А1").Value

End Sub

Преимущества переменных

Глядя на предыдущий пример, Вы, вероятно, подумали: «Зачем же вообще нужны переменные?» Прежде всего, они облегчают написание программы, особенно когда Вам приходится использовать некоторое значение несколько раз. Допустим, Вам нужно присвоить ячейкам диапазона A1 второго, третьего и четвертого листов значение, содержащееся в этой же ячейке первого листа. Вот как будет выглядеть программа без переменных:

Sub ЗадатьЗначения()

Worksheets(2).Range("A1").Value = Worksheets(1).Range("A1").Value

Worksheets(3).Range("A1").Value = _

Worksheets(1).Range("A1").Value

Worksheets(4).Range("A1").Value = _

Worksheets(1).Range("A1").Value

End Sub

Примените переменную, и программа станет короче (по числу символов) и понятнее:

Sub ИспользованиеПеременной()

Dim Num1 As Integer

Num1 = Worksheets(1).Range("A1").Value

Worksheets(2).Range("A1").Value = Num1

Worksheets(3).Range("A1").Value = Num1

Worksheets(4).Range("A1").Value = Num1

End Sub

Переменные не только сократят код и сделают его более читаемым. Они еще и ускорят его выполнение. Программа ИспользованиеПеременной, например, работает быстрее, чем ЗадатьЗначения. О скорости мы Вам расскажем чуть позже, а пока лишь запомните, что любое обращение к объекту, методу или свойству требует от Excel определенных действий и потому занимает некоторое время. В программе ЗадатьЗначенияколичество таких обращений можно определить по числу точек в инструкциях. В строках со второй по четвертую они использованы 12 раз, по четыре в каждой строке. В строках 3—6 программы ИспользованиеПеременнойточка встречается 8 раз, по две на строку. Предположим, что на обработку каждой точки требуется одно и то же время, тогда, подсчитав, получим, что программа ИспользованиеПеременнойвыполняется за 2/3 времени, затрачиваемого на работу ЗадатьЗначения. Так все обстоит и в действительности. Конечно, для таких коротких примеров различие в скоростях заметить невозможно, но в длинных и сложных приложениях разница становится весьма ощутимой.

Объектные переменные

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

Задание объектной переменной

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

Dim Range1 As Object

Set Range1 = Worksheets(1).Range("A1")

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

Set                                                  Ключевое слово для присваивания значения объектной переменной

Range1                                    Имя переменной

=                                               Оператор присваивания

Worksheets(l). Range(" A1")       Объект, присваиваемый переменной



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 111; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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