Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ7 - VBA Основы программирования Работа с ячей...doc
Скачиваний:
3
Добавлен:
19.11.2019
Размер:
1.51 Mб
Скачать

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.4028231038 до -1.40129810-45

для отрицательных чисел и от

1.40129810-45 до 3.4028231038

для положительных чисел

Double (с плавающей точкой двойной

точности)

8B

Числа с дробной частью от

-1.7976931348623110308 до

-4.9406564584124710-324

для отрицательных чисел и от

4.9406564584124710-324 до 1.7976931348623110308

для положительных чисел

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 на сделанную ошибку. Исправьте ошибку и проделайте все указанные действия заново.