Операции отношения (Операции сравнения)

Основы программирования на VBA

Переменные и типы данных

 

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

В VBA имеются следующие основные типы данных:

Тип данных Размер памяти (байт) Диапазон значений
Byte (байт) От 0 до 255
Boolean (логический) True или False
Integer (целое число) От –32768 до 32767
Long (длинное целое число) От –2147483648 до 2147483647
Single (число с плавающей запятой одинарной точности) От –3,4Е+38 до –1,4Е –45 и от 1,4Е-45 до 3,4Е+38
Double (число с плавающей запятой двойной точности) От-1,8Е+308 до-4,9Е-324 и от 4,9Е-324 до 1,8Е+308
Currency (денежный) От-922337203685477,5808 до 922337203685477,5807
Object (объект) Любой указатель объекта
String (строка переменной длины) 10+длина строки От 0 до ~ 2 миллиардов
String (строка постоянной длины) Длина строки От 0 до ~ 65400
Variant (числовые подтипы) Любое числовое значение вплоть до границ Double
Variant (строковые подтипы) 22+длина строки Как для строки (String) переменной длины

 

Описание переменных

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

Для описания типа данных переменной на уровне модуля или процедуры используется инструкция Dim. Например, следующая инструкция описывает переменную с типом Integer:

Dim N As Integer.

Переменные, описанные с помощью ключевого слова Dim на уровне модуля, доступны для всех процедур в данном модуле. Переменные, описанные на уровне процедуры, доступны только в данной процедуре (см. пример на с.61). По умолчанию строковая или текстовая переменная (String) является массивом переменной длины, который содержит символы. Однако текстовая переменная может быть определена и фиксированной длины. В следующем примере объявляется символьный массив размером в 25 символов: Dim S As String *25.

Инструкция Dim предназначена также для описания объектного типа переменных. Далее приводится описание переменной для нового экземпляра рабочего листа: Dim X As New Worksheet.

Если при описании объектной переменной не используется ключевое слово New, то для использования объекта, на который ссылается переменная, существующий объект должен быть присвоен переменной с помощью инструкции Set.

Если тип данных или тип объекта не задан, по умолчанию переменная получает тип Variant. Для обязательного описания всех переменных надо поместить в начале модуля инструкцию Option Explicit. Использование этой инструкции полезно при отладке программ, т.к. она позволяет выявить ошибки в именах переменных.

Допустимые имена

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

1. Длина имени не должна превышать 255 символов.

2. Имя не может содержать точек, пробелов и следующих символов: %, &, !,#, @, $.

3. Имя может содержать любую комбинацию букв, цифр и символов, начинающуюся с буквы.

4. Имена должны быть уникальны внутри области, в которой они определены.

5. Не следует использовать имена, совпадающие с ключевыми словами VBA, и имена встроенных функций и процедур. Имена можно набирать как на нижнем, так и на верхнем регистре. Комбинирование регистров позволяет повысить выразительность имен. Например, вместо имени процентнаяставка предпочтительнее имя ПроцентнаяСтавка.

Массивы

Как и в других языках программирования, в VBA можно использовать массивы: Dim B(3,3) As Single; Dim A(12) As Integer.

Первый пример объявляет двумерный массив 3х3 (матрицу), состоящий из действительных чисел. Второй пример объявляет одномерный массив (вектор) из 12 целых чисел, причем по умолчанию первый элемент массива будет А(0), а последний А(11). В этом случае говорят, что 0 – базовый индекс. Можно изменить базовый индекс, написав в начале листа модуля инструкцию Option Base 1. После этого индексы массивов А и В будут начинаться с единицы. Другим способом изменения базового индекса является использование ключевого слова To при объявлении массива: Dim B (1 To 3,1 To 3) As Single; Dim A (1 To 12) As Integer.

Массив в программе определяется поэлементно, например:

Dim B(1 To 2, 1 To 2) As Single B(1,1) = 2, B(1,2) = 4, B(2,1) = 1, B(2,2)=6.

Константы

Константы, в отличие от переменных, не могут изменять свои значения. Использование констант делает программы легче читаемыми и позволяет проще вносить исправления – отпадает необходимость многократно исправлять значение по тексту программы, т.к. достаточно ввести новое значение при определении константы, например:

Const ПроцентнаяСтавка As Single = 0.2;

Const Фирма = «ООО ЕвроМаркет».

 

Операции VBA

В программах на VBA можно использовать стандартный набор операций над данными. Имеются три основных типа операций:

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

2. Отношения, применяемые не только к числам, и их результатом являются логические значения, например x > y

3. Логические, используемые в логических выражениях, и их результатом будут логические значения, например Not x And y.

Приведем операции VBA указанных и дополнительных категорий.

Математические операции

Знак Операция Пример Результат
+ Сложение 3.8+4.3 8.1
- Вычитание 3.8-4.3 -0.5
* Умножение 2.5*1.2 3.0
/ Деление 14/5 2.8
^ Возведение в степень 3^2
- Перемена знака – (20+3) -23
\ Целочисленное деление 14\5
Mod Остаток от деления по модулю 14 MOD 5

 

Операции отношения (Операции сравнения)

Знак Значение операции Пример
= Равно 4=4
<> не равно 5<>6
> Больше 8>7
< Меньше 3<6
>= больше или равно 9>=9
<= меньше или равно 8<=9

 

Операции сравнения могут давать один из двух результатов: «истина» или «ложь». Все приведенные примеры имеют значение «истина». Примеры, имеющие значение «ложь»: 5 = 6, 7> 8, 6< 3, 8>= 9.

Операции сравнения работают не только с числовыми, но и с текстовыми данными. Пример: “Дом1”<> “Дом2” – истина, а “Дом” <>“Дом” – ложь. Операция сравнения двух строковых выражений в VBA обозначается знаком Like, т.е. [операнд 1] Like [операнд 2].

Применяется также операция сравнения двух операндов, содержащих ссылки на объекты, которая обозначается знаком Is, т.е.[операнд 1] Is [операнд 2].

Логические операции

Наиболее часто используемыми логическими операциями являются:

[операнд1] And [операнд2] – логическое умножение;

[операнд1] Or [операнд2] – логическое сложение;

[операнд1] Not [операнд2] – логическое отрицание.

Значение логических операций And, Or и Not

Значение операндов Значение логических операций
A B A And B A Or B Not A
Истина Истина Истина Истина Ложь
Истина Ложь Ложь Истина  
Ложь Истина Ложь Истина Истина
Ложь Ложь Ложь Ложь  
           

 

Другие операции

В VBA часто используется операция Сложение строк. Для сложения строк допустимо использование знака +, т.е. [строка1] + [строка2], но предпочтительнее, во избежание путаницы, применять операцию со знаком &, т.е. [строка1] & [строка2].

 

Приоритеты операций

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

Приоритет Операция
Вызов функции и скобки
^
- смена знака
*,/
\
Mod
+,-
>, <, >=, <=, <>, =
Not
And
Or
Xor (исключающее Or)
Equ (логическая эквивалентность…почти не используется)
Imp (логическая импликация….почти не используется)

 

Инструкции VBA

 

Инструкция VBA представляет собой полную команду языка VBA. Она содержит ключевые слова, операторы, переменные, константы и выражения. Имеются следующие три категории инструкций: 1) описания; 2) присвоения; 3) исполняемые инструкции.

 

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

 

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

Синтаксис:

[Let] Переменная (или постоянная или свойство объекта)=Выражение.

Ключевое слово Let необязательно и чаще всего опускается. Оператор присвоения предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, имя которой указано в левой части. В результате, например, действия следующей пары операторов

х =2

х = х+2

переменной х будет присвоено 4.

Для присвоения переменной ссылки на объект применяется инструкция Set. В следующем примере инструкция Set присваивает переменной область диапазон А1:В3: Set Область =Range (“А1:В3”).

В общем случае инструкция Set имеет следующий синтаксис

Set объектнаяПеременная={[New] объектноевыражение|Nothing}.

Ключевое слово New используется при создании нового экземпляра класса; ключевое слово Nothing позволяет освободить все системные ресурсы и ресурсы памяти, выделенные для объекта, на который имелась ссылка (иначе говоря, она удаляет объект из памяти).

Перенос строки

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

1. Нельзя разбивать переносом строковые константы.

2. Допустимо не более семи продолжений одной и той же строки.

3. Сама строка не может состоять более чем из 1024 символов.

В следующем примере первая из конструкций является разбиением второй на две строки:

Y=sin(Application.Pi()*x)+(1+x)^(1/2)/ _

(1+x^2)

Y=sin(Application.Pi()*x)+(1+x)^(1/2)/(1+x^2)

Комментарии

Работая с программой, удобно использовать комментарии, т.е. фрагменты текста программы, не являющиеся программными кодами и игнорируемыми компиляторами. Комментарии выполняют важные функции:

1) делают программу легко читаемой, поясняя смысл программных кодов и алгоритма; 2) временно отключают фрагменты программы при ее отладке.

В языке VBA существуют два способа ввода комментариев:

- применение апострофа (¢), который можно ставить в любом месте строки. При этом все символы, начиная от апострофа до конца строки, будут восприниматься компилятором как комментарий;

- применение зарезервированного слова Rem вместо апострофа.

Ниже приведен пример использования комментариев в тексте программы:

Dim a As Integer

¢

¢a – целая переменная

¢

Dim b As String ¢ b – строковая переменная.