Офисное программирование. Синтаксис VBA/.
Rambler's Top100

 

Основы синтаксиса VBA

Приводятся начальные сведения об синтаксических принципах языка и организации программы на VBA.
Типы данных.
Операторы.

1 Основные синтаксические принципы языка программирования Visual Basic For Application

- VBA нечувствителен к регистру, ключевые слова языка можно набирать и в верхнем, и в нижним регистре; если ключевое слово введено верно, то после окончания ввода оно будет записано с прописной буквы, и выделено цветом;

- любой текст до конца строки после одинарной кавычки – апострофа (') или слова Rem считается комментарием, он никак не влияет на программу, а только объясняет ее человеку-читателю;

- символьные значения заключаются в двойные кавычки (") Внимание! Это другой символ, не повторенная два раза одинарная кавычка!

- максимальная длина любого имени (переменной, константы, процедуры) – 255 символов;

- длина имени макроса 80 символов для Word и 64 символа для Excel;

- в именах могут использоваться символы латиницы и кириллицы, символ подчеркивание и символы цифр;

- имена, состоящие из латинских символов не чувствительны к регистру, состоящие из символов кириллицы – чувствительны;

- имена должны начинаться с буквы, не должны содержать знаков препинания (кроме подчеркивания), должны быть уникальны в зоне видимости, не должны совпадать с зарезервированными словами;

- в строке можно записать несколько операторов, разделяя их двоеточием, например

А=1: в=2

- для продолжения оператора в следующей строке, в конце предыдушей строки ставится пробел и символ «_» подчеркивания.

2 Структура программы

Уже отмечалось, что программа на VBA существует только вместе с документом.

Документ с программой образуют проект ( Project ). Все открытые в данный момент проекты (их столько же, сколько открытых в данный момент документов) можно увидеть в окне редактора Project Explorer . Окно открывается командой меню редактора View - Project Explorer или клавишами Ctrl +R .

Проект состоит из модулей, один модуль создается автоматически и называется ThisDocument . Другие модули могут создаваться программистом. Модули позволяют объединить части проекта по функциональным признакам.

Любой модуль состоит из области описаний ( Declarations ) и области кода ( Code).

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

Настоятельно рекомендуется в области описаний разместить директиву компилятора: Option Explicit, которая требует, чтобы все переменные в мảкросе были явно объявлены. Эта команда будет вставляться в модуль автоматически, если в меню редактора Tools – Option установить на вкладке Editor флажок Require Variable Declaration .

В области кода размещают все операторы программы.

Документ - проект - модуль - процедура

Рисунок 2-1. Структура проекта VBA.

Модуль, в свою очередь состоит из одной или нескольких процедур - функциональных блоков, решающих какую-то законченную задачу алгоритма. Процедура может быть

- типа Sub (подпрограмма) либо

- типа Function (функция).

Отличие этих процедур в том, что Function (функция) обязательно возвращает результат своей работы в вызывающую процедуру.

В VBA нет понятия «главная процедура». Все процедуры равноправны, их иерархия устанавливается исключительно логикой проекта. Все процедуры модуля находятся на одном иерархическом уровне, нет вложенности процедур. Связь проектов между собой возможна, но не очевидна.

3 Объявление данных

Объявления данных позволяют определить видимость переменных программы, т.е. каким частям программы будут доступны описываемые данные, а также указать типы данных, т.е. характер данных (целые, вещественные, логические, символьные и т.п.) и, следовательно, операции, которые допустимы для данных. Объявление должно быть сделано до первого использования переменной:

<Доступность> имя переменной As <Тип>

Формально в VBA описания данных не обязательны, тип данных определяться автоматически из смысла выполняемых операций. Но это требует дополнительных затрат времени и не рационально расходует память. Поэтому рекомендуется все данные определять до того, как они будут использоваться.

Для определения видимости переменных используется ключевые слова Dim, Public, Private, Static. Если переменная должна быть доступна только в том элементе (процедуре или модуле), в котором она объявлена, то следует использовать объявление Dim. Объявление Public в области Declarations сделает переменную доступной всем модулям проектам, при использовании внутри процедур оно действует так же, как Dim.

Тип переменной объявляется одновременно с видимостью с помощью ключевого слова As < Тип >, где <Тип> один из нескольких сотен допустимых в VBA типов. Большая часть этого многообразия относится к объектам, доступным в программе. Базовые типы, определенные в VBA:

числовые

целые: Byte, Integer, Long ;

вещественные : Single, Double, Currency;

дата и время: Data ;

строковый: string ;

логический: Boolean ;

объектный: Object ;

Variant – специальный тип, позволяющий хранить данные любого типа, используется по умолчанию для необъявленных данных.

Несколько примеров объявлений переменных:

Dim Summa As Double

Dim i,j,k As Long

Public Autor As String

Dim Otchet_1 As Word.Document

4 Операторы и операции

Оператор – наименьший элемент кода VBA. Оператор может объявить переменную, установить режим обработки программы (компиляции) или выполнить какое-то действие в программе.

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

А=1: в=2.5

Записаны два оператора в одной строке. Действия: присвоить переменной А значение 1, переменной в – значение 2,5. Обратите внимание: разделитель целой и дробной части – символ «точка» (.).

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

В VBA семь арифметических операторов.

+ сложение;

- вычитение;

* умножение;

/ деление;

\ целочисленное деление: остаток отбрасывается, результат не округляется;

mod остаток от целочисленного деления;

^ возведение в степень.

Логические данные могут принимать одно из двух значений:

True – истина;

False ложь

Эти значения получаются как результат применения операторов отношений:

= равно
(обратите внимание, что знак «=» используется двояко: в операторах присваивания он означает «поместить значение, вычисленное выражением справа от знака =, в контейнер (переменную), записанную слева от знака». В операторах сравнения знак означает «сравнить значения выражений слева и справа от знака и, если они равны, вернуть значение True, иначе вернуть значение False)»;

< меньше;

> больше;

<= меньше равно;

>= больше равно

<> не равно.

Для данных строкового типа при сравнении учитывается регистр и пробелы.

Для логических данных определены логические операции:

And И, Конъюнкция (соединение, логическое умножение), результат: истина, когда истинны оба операнда.

Or ИЛИ, дизъюнкция (разделение, логическое сложение), результат истина, когда истинен одни или оба операнда

Xor Исключающее ИЛИ, результат истина, когда истиннен один из операндов.

Not Отрицание,меняет логическое значение на противоположное.

Для строковых данных определена единственная операция – конкатенация, объединение нескольких строк в одну, символ операции: & или +. Различие в использовании разных символов для одной и той же операции состоит в том, что в первом случае данные, участвующие в операции будут (если это возможно) автоматически преобразованы к строковому типу.

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

Примеры:

str ="первая" & " и вторая " + "строка",

результат:

"первая и вторая строка"

Команда:

" Text " & 34

в результате даст

Text 34

Команда

" Text " + 34

– даст сообщение об ошибке Type mismatch – смешаны типы. В подобных случаях следует использовать функции преобразования текста в строку, как показано ниже

Команда

" Text " + cStr (34)

даст корректный результат:

Text 34

5 Массивы

Массив – совокупность однотипных данных. К каждому элементу массива доступ осуществляется по его номеру (индексу). Индекс массива указывается в круглых скобках.

Dim MyArray (2) As Integer

- объявлен массив из трех элементов, т.к. нумерация элементов массива по умолчанию начинается с 0.

Чтобы индексация начиналась с единицы, в области Declaration следует указать;

Option Base 1

Dim MyArray(2) As Integer

- объявлен массив из 2-х элементов

или

Dim MyArray (1 To 2) As Integer

Матрица (двумерный – с двумя индексами –массив):

Dim Matric (2,2) As Byte

' матрица 3*3 по умолчанию (0, 1, 2), например, Matric (1,2)=0 (присвоение значения 0 2-му элементу третьей строки матрицы)

Dim Matric(1 To 2, 1 to 2) As Byte

' определена матрица 2*2

Динамические массивы (размерность заранее не определена):

Dim Vect() As Single

' сначала объявляется массив без указания размерности

ReDim Vect(1 To 10)

' в нужный момент –определяется размерность, при этом массив очищается.

Если используется слово Preserve :

ReDim Preserve Vect (1 To 15)

то сохраняются прежние значения элементов и добавляются пустые элементы.

Функции LBound и UBound возвращают значение границ массива

LBound(Vect ) вернет 1

UBound(Vect) вернет 15

Для многомерных нужно еще указать измерение, границы которого определяются:

LBound ( Matric ,1)

LBound ( Matric ,2)

Одновременное создание и заполнение массива с помощью функции Array :

Dim MyMatr

MyMatr = Array (100,200,300,400,500)

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

Коллекции – это специальные объекты, предназначенные для хранения наборов одинаковых элементов. Они изначально безразмерны (не нужно определять размерность). Для коллекции определены метод Add () – добавление элемента в коллекцию, метод Item ( nom )– для получения ссылки на нужный элемент, свойство Count – возвращающее количество элементов в коллекциии метод Remove ( nom ) для удаления элемента из коллекции, nom –выражение, задающее номер элемента в коллекции, нумерация ведется с единицы.

6 Контрольные вопросы

1. Что будет получено в результате выполнения оператора:
rezult="Иванов" & "Иван" & "Иванович"

2. Сколько элементов можно сохранить в описанном ниже массиве

Dim Vector (12) As Integer

3. Какие диапазоны значений у данных указанных типов:

Byte

Integer

Long

Single
Double
Currency




Написать автору
Помочь автору. Кошельки WM
R205462629094
Z323980174931
Z119438884119
Яндекс - деньги
41001136494110

Rambler's Top100 Рейтинг@Mail.ru Бард Топ