
- •1 Элементы интегрированной среды разработки программ vba
- •2 Основные элементы среды vba.
- •3 Написание программного кода
- •4 Создание простейшей программы
- •5 Основные команды отладки программ
- •6 Переменные. Типы данных. Операторы объявления типа данных
- •7 Константы
- •8 Оператор присваивания. Арифметические выражения.
- •9 Математические функции. Операторы пересчета
- •10 Логические выражения. Операции сравнения. Логические операции
- •11 Операторы условного и безусловного перехода
- •12 Работа с циклами
- •13 Массивы
6 Переменные. Типы данных. Операторы объявления типа данных
Язык VBA не очень строгий язык в том смысле, что его строгость регулируется его настройками. Так в VBA можно не описывать типы переменных, как например, сделано в программе Прямая_Задача. Однако вся ответственность за правильность программного кода, в частности за имена переменных и их типы, лежит в этом случае на самом программисте.
Строгий подход требует явного описания всех переменных, массивов и других конструкций, используемых в программном коде. Признаком того, что редактор VBA настроен на явное описание переменных, является наличие в окне кода, соответствующем новому модулю первой строки вида
Option Explicit
Ключевое слово Option означает, что за ним должна быть указана какая-то опция, т.е. указание редактору VBA. В данном случае таким указанием является слово Explicit, в переводе с английского означающее «явный», что применительно к VBA означает обязательное требование объявления идентификаторов переменных, массивов и других конструкций языка VBA в явном виде.
Эту строку можно ввести в окно кода или удалить вручную, как обычную строку программы, либо через настройку VBA. Для этого до вставки нового модуля необходимо выполнить следующие действия.
1) в среде VBA открыть меню Tools (Сервис);
2) выбрать пункт Options (Параметры);
3) активизировать вкладку Editor (Редактор);
4) включить опцию Require Variable Declaration (Явное описание переменных);
5) нажать кнопку OK.
После этого можно вставить новый модуль В результате в окне модуля появится соответствующая строка (Option Explicit).
При наличии строки Option Explicit компьютер диагностирует использование в тексте программы необъявленной переменной, в результате чего: при выполнении программы компьютером будет выдана ошибка Variable not defined (Переменная не определена).
Синтаксис оператора объявления переменной:
Dim переменная [As тип]
В этой конструкции:
Dim – ключевое слово, свидетельствующее о том, что объявляется переменная (Dimension – размер); это наиболее распространенный вариант объявления;
переменная – имя объявляемой переменной;
As – ключевое слово, используемое при задании типа данных (as – как);
тип – тип данных для объявляемой переменной или (что то же самое) тип переменной.
Квадратными скобками выделена необязательная часть конструкции (которая может отсутствовать). Иными словами, имеются две конструкции оператора объявления переменной:
Dim переменная
Dim переменная As тип
Одним оператором Dim можно объявить несколько переменных, перечислив их через запятую. При этом тип данных, т.е. конструкция As тип, должен быть указан для каждой переменной.
Типы данных, разрешенные в языке VBA приведены в табл. 1
Типы данных Byte, Integer, Long, Currency, Single, Double называются числовыми типами данных.
Тип данных String называется строковым.
Если при объявлении переменной программист не указывает тип данных, то переменной автоматически будет присвоен тип Variant. Это означает, что в ячейке, соответствующей этой переменной, может храниться информация любого вида, т.е. тип данных Variant аналогичен формату «Общий» табличного процесора Excel.
Табл. 1. Типы данных в VBA
Тип данных |
Размер ячейки (B – байт) |
Значения переменной/константы или примечания |
Boolean (логический) |
2B |
True (Истина, логическая единица) и False (Ложь, логический ноль) |
Byte (короткий целый беззнаковый) |
1B |
Целые числа от нуля до 255 |
Integer (целый) |
2B |
Целые числа от -32 768 до +32 767 |
Long (длинный целый) |
4B |
Целые числа от – 2 147 483 648 до + 2 147 483 647 |
Currency (денежный) |
8B |
Числа с четырьмя десятичными знаками от -922 337 203 685 477.5808 до +922 337 203 685 477.5807 |
Single (с плавающей точкой одинарной точности) |
4B |
Числа с дробной частью от -3.4028231038 до -1.40129810-45 для отрицательных чисел и от 1.40129810-45 до 3.4028231038 для положительных чисел |
Double (с плавающей точкой двойной точности) |
8B |
Числа с дробной частью от -1.7976931348623110308 до -4.9406564584124710-324 для отрицательных чисел и от 4.9406564584124710-324 до 1.7976931348623110308 для положительных чисел |
Date (дата) |
8B |
От 1 января 100 года до 31 декабря 9999 года |
String (строковый переменной длины) |
10B+1B на символ |
Длина строки от 0 до 231 символов |
String (строковый постоянной длины) |
Задается при выполнении оператора Dim |
Длина строки от 0 до 216 символов |
Variant (универсальный) |
Для чисел 16B Для строк 22B+1B на символ |
Значения соответствуют типу данных Boolen, Byte, Integer, Long, Currency, Single, Double или Date определяемому автоматически |
Object (объект) |
4B |
Используется при объявлении объектов; аналогичен типу Variant (хранит ссылку на любой объект в памяти) |
Также следует иметь в виду, что при записи дробных чисел в VBA может быть использована либо десятичная точка, либо десятичная запятая, но только не оба варианта одновременно. То, какой вариант необходимо использовать, зависит от настройки операционной системы Windows. В рассматриваемом выше примере Windows, а, следовательно, и VBA настроены на десятичную запятую.
Оператор Dim является одним из 4-х операторов объявления переменных. Данный оператор используется в большинстве случаев объявления переменных. Если переменная объявлена посредством оператора Dim в области объявлений модуля, то она будет доступна во всем модуле, если в процедуре – только на время работы процедуры.
Три остальных оператора – это Private, Public и Static.
Private – при объявлении переменных в стандартных модулях VBA, значит то же, что и Dim.
Public – если переменная объявлена посредством оператора Public в области объявлений модуля, то такая переменная будет доступна всем процедурам во всех модулях данного проекта. Если же переменная объявлена внутри процедуры, то она будет вести себя, как объявленная оператором Dim.
Static – переменные, объявленные посредством оператора Static можно использовать только внутри процедуры. Эти переменные видны только внутри процедуры, в которой они объявлены. Однако они сохраняют свое значение между разными вызовами этой процедуры, что позволяет использовать их для накопления каких-либо значений.
Задание.
1. Добавьте в процедуру Прямая_Задача следующие операторы с описанием типов переменных:
Dim Gr As Integer, Min As Integer, Sec As Integer
Dim D As Single, Rad As Single, Dx As Single, Dy As Single
Обратите внимание, что сразу же после объявления переменных оператором Dim изменились первые символы тех переменных, имена которых были написаны строчными буквами.
2. Вставьте в начало модуля Module1 пустую строку и напишите в ней
Option Explicit
Сделайте преднамеренную ошибку в тексте процедуры. В операторе Sec = 30 замените символ c на k, чтобы получилось Sek = 30. Установите точку прерывания на последней строке и запустите процедуру на выполнение. Посмотрите, как в этом случае реагирует VBA на сделанную ошибку. Исправьте ошибку и проделайте все указанные действия заново.