Объекты, свойства и методы VBA
Одним из основных объектов VBA является объект. Объект – это то, чем вы управляете с помощью программы на языке VBA, например, диалог, рабочий лист, диапазон ячеек . Каждый объект обладает некоторыми характеристиками или свойствами. Например, диалог может быть видимым и не видимым в данный момент на экране. Можно узнать текущее состояние диалога с помощью свойства Visible. Другим примером свойства объекта может быть шрифт, используемый для отображения информации в ячейке (объекте) рабочего листа. Изменяя свойства, вы можете менять характеристики объекта.
Объект содержит также список методов которые к нему применимы. Методы – это то, что вы можете делать с объектами. Например, показать диалог на экране или убрать его можно с помощью методов Show и Hide, соответственно.
Таким образом, объект это программный элемент, который имеет своё отображение на кране, содержит некоторые переменные, определяющие его свойства, и некоторые методы для управления объектом. Объект является “кирпичиком” построения программы VBA. В VBA имеется много встроенных объектов, например:
· Range – диапазон ячеек (может включать только одну ячейку)
· Cells – ячейка
· Sheet – лист
· WorkSheet – рабочий лист
· DialogSheet – диалоговое окно.
Большинство объектов принадлежит к группе подобных объектов. Эти группы называются наборами. Например, все рабочие листы рабочей книги образуют набор, называемый WorkSheets. Набор используется одним из двух способов: либо какое-либо действие совершается над всеми объектами набора, например, удалить, либо со ссылкой на набор выбирается конкретный объект для работы с ним. Второй способ реализован в следующей конструкции:
WorkSheets (“Первый”),
выбирающей рабочий лист Первыйиз рабочей книги. Другими примерами наборов являются:
· Sheets - лист
· DialogSheet - диалоговые окна
· DrawingObjects - графические объекты.
Изменяя свойства, можно изменять характеристики объекта или набора объектов. Установка значений свойств – это один из способов управления объектами. Для установки свойств необходимо ввести имя объекта, затем поставить точку и за ней – имя свойства. Далее должен следовать знак равенства и значение свойства. Синтаксис установки значения свойства объекта выглядит следующим образом:
Объект. Свойство = Выражение
В приведённом ниже примере для свойства Value диапазона ячеек Начальные_данные устанавливается значение 0,1 (т.е. в ячейках этого диапазона будет записано число 0.1):
Range (“Начальные_данные”). Value = 0.1
В следующем примере в ячейку А2 вставляется формула путём изменения свойства Formula (формула):
Range (“А2”). Formula ”= СУММА (А1 : С1)”
Некоторые свойства являются неизменяемыми, т.е. допустимыми только для чтения. Имеется в виду, что значение свойства можно узнать, но нельзя изменить. Например, для диапазона, состоящего из одной ячейки, свойства Row (строка) и Column (столбец) являются неизменяемыми. Другими словами, можно узнать, в какой строке и в каком столбце находится ячейка, но изменить её положение путём изменения этих свойств нельзя. Синтаксис чтения свойств объекта выглядит следующим образом:
Переменная = Объект. Свойство
В следующем примере переменной Процентная_ставка присваивается значение из ячейки А1 текущего рабочео листа:
Процентная_ставка = Range (“А1”).Value
или другим способом:
Процентная_ставка = cells (1,1).Value
Кроме свойств, как уже отмечалось выше, у объектов есть ряд методов, т.е. команд, применяемых к объекту. Например, у объекта – диапазон ячеек – имеется метод Clear, позволяющий очистить содержимое диапазона. Приводимый ниже пример показывает, как можно очистить диапазон Начальные_данные:
Range (“Начальные_данные”). Clear
А в примере
Range (“А10 : В12”).Select,
выбирается диапазон ячеек А10 : В12. Таким образом, синтаксис вызова объекта имеет следующий вид:
Объект. Метод
В Excel имеется много объектов, причем некоторые из них содержат другие объекты. Например, рабочая книга содержит рабочие листы, рабочий лист содержи диапазон ячеек и т. д. Объектом самого высокого уровня является Application (приложение). Если вы изменяете его свойства или вызываете его методы, то результат применяется к текущей работе Excel. Например, можно завершить работу в Excel, применив метод Quit (выход) к объекту Application:
Application. Quit
Как было отмечено, точка после объекта указывает на то, что далее следует имя свойства или метода. Но после точки можно указать и имя объекта для перехода от одного объекта к другому. Например, следующее выражение очищает вторую строку рабочего листа Май в рабочей книге Отчет:
Application. Workbooks (“Отчет”). Worksheets (“Май”). Rows (2). Delete
Определение имени приложения:
Application. Name
Если вспомнить, что строка содержит отдельные ячейки, свойства которых тоже можно устанавливать, то выражение становится ещё длиннее:
Application. Workbooks (“Отчет”). Sheets (“Май”). Rows (2). Cells (1). Value = “Да”
Таким образом ссылки на объекты могут быть слишком громоздкими. Если данный объект часто используется в программе, то разумно создать объектную переменную с помощью команды Set. Например, предыдущий пример можно записать в следующем виде:
Dim R As Object
Set R = Application. Workbooks (“Отчет”). Sheets (“Май”). Rows (2). Cells (1)
R.Value = “Да”
Приводимые выше примеры можно записать гораздо короче:
· Можно не писать имя объекта Application, т. к. это подразумевается по умолчанию;
· При работе с подобъектом уже активизированного объекта нет необходимости указывать содержащий его объект;
· VBA использует некоторые свойства и методы, которые возвращают объект, к которому они относятся.
Использование последнего обстоятельства позволяет быстро указывать нужный объект. Так, в следующем примере устанавливается значение активной ячейки
ActiveCells. Value = “Да”
ActiveCells (активная ячейка), ActiveSheet (Активный лист), ActiveWorkBook (активная рабочая книга) и Selection (выбор – указывает на выбранный объект) являются примерами свойств, возвращающих объект.
Типы данных
Переменные и типы данных определяют, где и как данные хранятся в памяти компьютера. В языке со строгим контролем типов вы обязаны указывать тип каждой переменной перед ее использованием. Хотя Visual Basic не является языком со строгим контролем типов, он предоставляет возможность управлять использование памяти вашего компьютера более эффективно, задавая в явном виде типы всех ваших переменных.
Определяя тип данных для величины, тем самым определяется соотношение между разрядностью, размером и используемой памятью.
Встроенные типы данных
В Visual Basic имеется одиннадцать встроенных типов данных, представленных в табл. 1.
Таблица 1.
Встроенные типы данных Visual Basic
Тип данных | Размер (байтов) | Разрядность (цифр) | Диапазон |
Boolean | True или False | ||
Integer | от -32768 до 32767 | ||
Long | от -2147483648 до 2147483647 | ||
Single | от -3,402823Е+38 до -1,401298Е-45 и от 1,401298Е-45 до 3,402823Е+38 | ||
Double | от -1,79769313486232Е+308 до -4,94065645841247Е-324 и от 4,94065645841247Е-324 до 1,79769313486232Е+308 | ||
Currency | от -922337203685477,5808 до 922337203685477,5807 | ||
Date | от 01.01.100 до 31.12.9999 | ||
String | 1+1 на символ | от 0 до 65535 символов | |
Object | Любой определенный объект | ||
Array | Определяется размером | количеством и элементов | |
Variant | Определяется данными | записанными | Любой встроенный тип данных |
Тип данных Booleanиспользует два байта (16 бит) памяти. Этот тип данных имеет только два возможных значения: True (истина) или False (ложь), которые могли бы быть представленными одним битом, но в действительности тип Boolean хранится как Integer ("0"- False, "-1" - True).
Тип данныхIntegerиспользует два байта памяти для хранения смещенного целого числа. Целое число без знака может принимать только положительное значение, а смещенное целое число может принимать как положительное, так и отрицательное значение.
Тип данных Long- это целое число двойной длины, которое использует четыре байта, имеет двойное разрешение по сравнению с данными типа Integer и использует в два раза больше памяти.
Тип данныхSingle представляет собой действительное число с плавающей точкой. Использовать этот тип данных нужно осторожно, особенно при вычислении денежных величин, так как он имеет только семь цифр разрешения. Если вы использовали два из этих разрядов для центов, оставляя таким образом только пять для долларов, то максимальное значение будет $34,028.23. При попытке записать число больше, чем это, произойдет ошибка переполнения.
Тип данныхDouble - этоSingle двойного размера, с двойной разрешающей способностью, требующий вдвое больше памяти, и в восемь раз большим диапазоном чисел.
Тип данныхCurrency- это специальное восьмибайтное число, в котором десятичная точка всегда располагается между четвертой и пятой цифрами справа. Этот тип специально создан для минимальных ошибок округления. При использовании типов данных с плавающей точкой ошибка округления может привести к получению величины, равной 4,999 999 999 вместо 5,0. Иногда эта разница бывает существенна.
Тип Dateпредназначен для хранения дат и времени в восьми байтах памяти. Даты записываются в виде целых чисел дней от 01.01.1900, а время - как дробная часть дня. Таким образом, значение 34398.75 в формате Date означает 5 марта 1994 года и время 18:00. Используя этот тип данных имейте в виду, что хотя диапазон Visual Basic расширен от 01.01.100 до 31.12.9999, диапазон Excel - всего лишь от 01.01.1900 до 31.12.2078.
Тип данных Stringиспользуется для хранения строк текста по одному байту памяти на каждый символ плюс один, чтобы отметить конец строки.
Тип данных Object использует четыре байта памяти для хранения ссылки на любой объект Visual Basic.
Тип данных Arrayв действительности не является отдельным типом данных. Он скорее определяет индексный список величин одного из других типов данных, т.е. массив.
Тип данных Variant используется в Visual Basic как тип данных по умолчанию, т.е. если тип данных для хранения величины не указан, то используется тип данных Variant. Variant имеет возможность хранить практически любую величину и бывает полезен для коротких, простых программ.
Переменные и их объявление
Переменные - это поименованные области в памяти компьютера. После вычисления какого-либо значения его нужно записать в память, чтобы затем можно было к нему обращаться. Использование переменных дает Visual Basic возможность создавать прямое соответствие между областью памяти и заданным именем.