- •Лекция «Visual Basic for Application»
- •Создание программ
- •Создание новой программы
- •Объявление процедуры
- •Инструкции
- •Правила именования объектов в vba
- •Описание функций
- •Инструкции
- •Использование операторов
- •Объявление констант
- •Объявление переменных
- •Типы данных vba
- •Использование типа Variant: за и против
- •Область определения переменных
- •Оператор присваивания
- •Параметры компилятора
- •Исполняемые операторы
- •Операции в vba
- •Приоритет операций
- •Использование встроенных функций vba
- •Имя_функции([аргументы])
- •InputBox(“Вводи х”, ”Моя программа ”, 8)
- •Функции ввода-вывода Функция InputBox
- •Функция вывода. Функция Msgbox
- •Управляющие структуры
- •Условный оператор if
- •Однострочный синтаксис if
- •If условие Then команда1 [Else команда2]
- •Многострочный синтаксис оператора if
- •Вложенные операторы if
Использование типа Variant: за и против
За:
-
Как уже указывалось, тип Variant является очень удобным, т.к. может хранить любые данные и пользователю не надо задумываться о том, какой тип выбрать.
-
Использование типа Variant позволяет избежать такой часто возникающей ошибки как переполнение типа:
Dim A As Byte
A=240
A=240^3
При выполнении последнего оператора возникнет ошибка переполнения типа, т.к. тип Byte может хранить только числа от 0 до 255. Этой ошибки не возникло бы, если переменная была объявлена как Variant.
Dim A ‘ переменная А рассматривается как переменная типа Variant
A=240 ‘ преобразование к типу Integer
A=240^3 ‘преобразование к типу Long
Против:
-
Данные типа Variant требуют больше места в памяти, чем другие типы данных, т.к. память резервируется с запасом.
-
VBA требует, чтобы тип переменной Variant при выполнении присваивания приводился в соответствие с типом присваиваемого значения. Этот процесс требует времени, что становится особенно заметно, если присваивание производится внутри цикла.
-
Использование типа Variant приводит к трудно обнаруживаемым ошибкам, т.к. никогда нельзя быть полностью уверенным в том, какой именно тип имеют данные (например, число может быть распознано как строка).
Итак, типом Variant пользуемся том случае, когда неизвестно данные какого типа будут введены.
! Указывая конкретный тип, вы имеете возможность выбрать тип, который обеспечивает в точности необходимый минимум для хранения соответствующих данных.
Область определения переменных
Область определения переменной определяет, где можно использовать данную переменную.
По области определения различают: локальные переменные, переменные уровня модуля и общедоступные (публичные) переменные.
Локальные переменные объявляются внутри процедуры или функции с помощью директивы DIM. Видны только внутри той программы, в которой объявлены. Не доступны из других процедур. Имя локальной переменной должно быть уникальным в пределах одной процедуры. В разных процедурах локальные переменные могут иметь одинаковые имена.
Переменные уровня модуля объявляются с помощью директивы DIM в начале модуля до начала всех программ. Доступны всем процедурам, описанным в модуле. Имя такой переменной должно быть уникальным в пределах всего модуля.
Общедоступные переменные видны сразу в нескольких модулях и могут использоваться программами, расположенными в разных модулях.
Общедоступная переменная описывается в одном модуле с помощью директивы PUBLIC до начала всех программ. Обратится к ней из другого модуля можно, используя точечную нотацию, т.е. добавляя к имени переменной имя модуля, в которой переменная описана. Например, в модуле “Модуль2” объявлена переменная Количество:
PUBLIC Количество As LONG
----------------------------------------------------------
Обратиться к этой переменной из “Модуля3” можно так:
Модуль2.Количество
-
Оператор присваивания
Оператор присваивания приписывает переменным конкретные значения. Состоит всегда из трех частей: имени переменной, знака равенства и выражения задающего нужное значение
Имя_переменной = выражение
Выражение – это комбинация ключевых слов, операторов, переменных и констант, результатом вычисления, которого является строка, число или логическое выражение.
! При выполнении оператора присваивания переменной, стоящей в левой части, присваивается результат вычисления выражения, стоящего в правой части.
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 знак присваивания служит другой цели – записывает некоторое значение в участок памяти, на который указывает имя переменной.