Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция «Visual Basic for Application».doc
Скачиваний:
7
Добавлен:
26.11.2018
Размер:
247.3 Кб
Скачать

Использование типа Variant: за и против

За:

  1. Как уже указывалось, тип Variant является очень удобным, т.к. может хранить любые данные и пользователю не надо задумываться о том, какой тип выбрать.

  2. Использование типа Variant позволяет избежать такой часто возникающей ошибки как переполнение типа:

Dim A As Byte

A=240

A=240^3

При выполнении последнего оператора возникнет ошибка переполнения типа, т.к. тип Byte может хранить только числа от 0 до 255. Этой ошибки не возникло бы, если переменная была объявлена как Variant.

Dim A ‘ переменная А рассматривается как переменная типа Variant

A=240 ‘ преобразование к типу Integer

A=240^3 ‘преобразование к типу Long

Против:

  1. Данные типа Variant требуют больше места в памяти, чем другие типы данных, т.к. память резервируется с запасом.

  2. VBA требует, чтобы тип переменной Variant при выполнении присваивания приводился в соответствие с типом присваиваемого значения. Этот процесс требует времени, что становится особенно заметно, если присваивание производится внутри цикла.

  3. Использование типа Variant приводит к трудно обнаруживаемым ошибкам, т.к. никогда нельзя быть полностью уверенным в том, какой именно тип имеют данные (например, число может быть распознано как строка).

Итак, типом Variant пользуемся том случае, когда неизвестно данные какого типа будут введены.

! Указывая конкретный тип, вы имеете возможность выбрать тип, который обеспечивает в точности необходимый минимум для хранения соответствующих данных.

Область определения переменных

Область определения переменной определяет, где можно использовать данную переменную.

По области определения различают: локальные переменные, переменные уровня модуля и общедоступные (публичные) переменные.

Локальные переменные объявляются внутри процедуры или функции с помощью директивы DIM. Видны только внутри той программы, в которой объявлены. Не доступны из других процедур. Имя локальной переменной должно быть уникальным в пределах одной процедуры. В разных процедурах локальные переменные могут иметь одинаковые имена.

Переменные уровня модуля объявляются с помощью директивы DIM в начале модуля до начала всех программ. Доступны всем процедурам, описанным в модуле. Имя такой переменной должно быть уникальным в пределах всего модуля.

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

Общедоступная переменная описывается в одном модуле с помощью директивы PUBLIC до начала всех программ. Обратится к ней из другого модуля можно, используя точечную нотацию, т.е. добавляя к имени переменной имя модуля, в которой переменная описана. Например, в модуле “Модуль2” объявлена переменная Количество:

PUBLIC Количество As LONG

----------------------------------------------------------

Обратиться к этой переменной из “Модуля3” можно так:

Модуль2.Количество

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

Оператор присваивания приписывает переменным конкретные значения. Состоит всегда из трех частей: имени переменной, знака равенства и выражения задающего нужное значение

Имя_переменной = выражение

Выражение – это комбинация ключевых слов, операторов, переменных и констант, результатом вычисления, которого является строка, число или логическое выражение.

! При выполнении оператора присваивания переменной, стоящей в левой части, присваивается результат вычисления выражения, стоящего в правой части.

X=4 ‘ переменной X присваивается число 4

A=4+Sin(X)

C=S>4 ‘ переменной С присваивается результат сравнения S>4

Z=Cells(1,2).Value ‘переменной Z присваивается значение ячейки, стоящей на пересечении 1-‘ой строки и 2-ого столбца

Cells(1,2).Value= Z ‘Ячейке, стоящей на пересечении 1-‘ой строки и 2-ого столбца ’присваивается значение переменной Z

Не следует путать знак “=” с математическим знаком равенства. В математике знак “=” служит для обозначения того факта, что две величины равны между собой. В VBA знак присваивания служит другой цели – записывает некоторое значение в участок памяти, на который указывает имя переменной.