ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.11.2021
Просмотров: 99
Скачиваний: 1
Система программирования VBA является средой визуального программирования и позволяет достаточно легко создавать различные визуальные (видимые на экране) объекты (окна форм, кнопки, текстовые поля, надписи, списки и пр.). Пользователь с помощью специальной панели инструментов может формировать эти элементы на экране, задавая их свойства (положение на экране, размер, цвет и т.п.). Писать программный код при этом не нужно (так, как это потребовалось бы в классических алгоритмических языках).
В системе VBA работает механизм «событие-отклик», с помощью которого осуществляется управление последовательностью выполнения процедур. Событие представляет собой некоторое действие, распознаваемое объектом. События могут возникать в результате действий пользователя или программы. В роли события может выступать нажатие клавиши на клавиатуре и т.д. Например, для визуального объекта «кнопка» событием является щелчок мышью по этой кнопке на экране.
Чтобы объект мог правильно реагировать на событие, необходимо запрограммировать для него соответствующий отклик в виде некоторой процедуры (подпрограммы). Таким образом, программирование будет сводиться к разработке процедур-откликов созданных объектов на нужные события. При этом необязательно программировать все отклики на все возможные события для данного объекта. Если отклик не создан на какое-то событие, то программа просто никак не будет реагировать в случае возникновения этого события (оно останется безответным).
2. Типы данных в языке VBA
В языке VBA так же, как в классическом языке Basic, все типы данных можно подразделять на простые и структурированные.
К простым типам относятся: целый, вещественный, логический.
К структурированным типам относятся: дата; массив; строка; тип, определяемый пользователем.
В таблице 3 приведены названия, обозначения, размер памяти в байтах (занимаемый значением этого типа), а также диапазоны допустимых значений для простых типов данных языка VBA и типов Variant, Object и String.
Целый тип данных в VBA представлен тремя подтипами: Byte, Integer, Long.
Вещественный тип имеет 4 подтипа: Single, Double, Currency, Decimal.
Логический тип обозначается как Boolean.
Таблица 3.
Тип данных |
Размер памяти (байты) |
Диапазон значений |
Byte (байтовый) |
1 |
От 0 до 255 |
Integer (целый) |
2 |
От -32768 до 32767 |
Long (длинное целое) |
4 |
От -2147483648 до 2147483647 |
Boolean (логический) |
2 |
True, False |
Single (число с плавающей запятой одинарной точности) |
4 |
От -3,4E+38 до -1,4E-45 и от 1,4E-45 до 3,4E+38 |
Double (число с плавающей запятой двойной точности) |
8 |
От -1,8E+308 до -4,9E-324 и от 4,9E-324 до 1,8E+308 |
Currency (денежный) |
8 |
От -922337203685477,5808 до 922337203685477,5807 |
Decimal (число с фиксированной запятой) |
14 |
От -79228162514264337593543950335 до 79228162514264337593543950335 для целых чисел; от -7,9228162514264337593543950335 до 7,9228162514264337593543950335 для чисел с фиксированной запятой (28 знаков после десятичной точки) |
Object (объект) |
4 |
Любой указатель объекта |
String (строка переменной длины) |
10+длина строки |
От 0 до 2 миллиардов |
String (строка постоянной длины) |
Длина строки |
От 0 до ≈ 65400 |
Variant (числовые подтипы) |
16 |
Любое числовое значение вплоть до границ Double |
Variant (строковые подтипы) |
22+длина строки |
Как для строки (String) переменной длины |
Date (дата) |
8 |
January 1.100 – December 31.9999 т.е. 01.01.0100 – 31.12.9999 |
Тип данных Строка (String). Строковый тип данных позволяет хранить последовательности символов – строки, которые могут быть постоянной и переменной длины. Строки постоянной (фиксированной) длины – это строки, длины которых ограничены. Они описываются с помощью оператора Dim, согласно следующему синтаксису:
Синтаксис: Dim <идентификатор> As String * <длина строки>
Пример: Dim S As String *10 – описание переменной S как строки с максимальной длиной 10 символов.
В значении типа строка символов могут присутствовать любые символы кодовой таблицы ЭВМ (в том числе русские буквы и т.д.). Строковые значения в программе должны записываться в кавычках.
В VBA для строк может использоваться операция «конкатенация», которая позволяет объединять несколько строк в одну. Она обозначается либо знаком +, либо &.
Пример: S = ”Иванов”
F = S + ” ” + ”Иван”
В результате строковая переменная F примет значение ”Иванов Иван”.
Тип данных Variant. Данный тип является особенностью VBA (отсутствует в классическом Бейсике). Переменная типа Variant может содержать данные любого типа. Если для переменной не объявлен тип данных, то по умолчанию используется тип данных Variant.
Переменная, описанная типом Variant, фактически может в одной и той же программе принимать значения разного типа, и это не будет являться ошибкой.
Тип данных Массив. В VBA могут использоваться массивы двух типов: статические и динамические. Границы статического массива задаются в программе заранее с помощью оператора Dim.
Синтаксис:
Dim <идентификатор>(<номер последнего элемента>) As <тип эл-тов>
Пример: Dim X(100) As Integer - описание одномерного массива, состоящего из 100 целых чисел.
В VBA, как и в классическом Бейсике, индексирование массива по умолчанию начинается с нуля, т.е. индекс 0 обозначает первый элемент массива, индекс 1 – второй и т.д. Чтобы задать нумерацию элементов массива с 1, необходимо использовать оператор:
Option Base 1
С помощью оператора Dim можно описывать также многомерные массивы (имеющие более одного индекса).
Пример: Dim Y(10,12) As Double – описание двумерного массива вещественных чисел двойной точности, который представляет собой матрицу из 10 строк и 12 столбцов.
Динамический массив используется в том случае, когда размер массива заранее неизвестен. Для его описания также используется оператор Dim, в котором не задаются границы массива, а тип элементов определяется как Variant.
Пример: Dim A() As Variant
Далее в программе, когда станет известен размер массива, может быть задан его фактический размер с помощью оператора ReDim.
Пример: ReDim A(20)
3. Арифметические и логические выражения
В VBA арифметические выражения записываются только в одну строчку и пропуск знаков операций недопустим. Обозначение операций: + - сложение, – - вычитание, * - умножение, / - деление, ^ - возведение в степень.
Пример: Z = (X + 3.25 * X ^ 2) / (1 – X ^ 3) ^ (1/2)
Порядок выполнения операций определяется согласно их приоритетам. Самый высокий приоритет у возведения в степень. Далее выполняются умножение и деление. В последнюю очередь – сложение и вычитание. Нарушить порядок выполнения операций по приоритетам можно с помощью скобок.
Для записи логических выражений в VBA могут использоваться операции сравнения: < , >, =, <=, >=, <> (не равно), а также логические операции: And – конъюнкция, Or – дизъюнкция, Not – инверсия.
Пример: X>0 And X<=5 – данное логическое выражение будет истинным, если 0<X≤5.
4. Основные операторы языка VBA
1. Оператор присваивания.
Синтаксис: [Let] <идентификатор> = <выражение>
Данный оператор вычисляет значение выражения, записанного в правой части (после =), и присваивает полученное значение переменной, чей идентификатор записан в левой части (перед =).
В VBA в левой части может быть записан не только идентификатор переменной, но и идентификатор свойства какого-либо объекта.
Примеры: 1) X = 1, 2) A = ”Академия”, 3) Y = - 1.5, 4) Z = 3 + X ^ 5 – Sin (Х)
2. Условный оператор.
Синтаксис: If <условие> Then <оператор 1> [ Else <оператор 2> ]
Условный оператор находит значение условия – логического выражения. Если оно «истина», то выполняется оператор 1. Если оно «ложь», то выполняется оператор 2.
Примеры:
1) If X>0 Then Y = X^ 2 + 3 Else Y = X ^ 3 – 1 (ветвление)
2) If А>В Then А = В (обход)
Если требуется задать не одно, а сразу несколько действий после Then или Else, то можно воспользоваться блочной формой синтаксиса:
If <условие> Then
<оператор 1>
…
[ Else
<оператор 2>
… ]
End If
Пример: If X>0 Then
Y = X + Sin ( 3 * X + 8 )
Z = ( Y + 1) / Y ^ 2
Else
Y = 0
Z = 1
End If
3. Оператор цикла с заданным числом повторений.
Синтаксис:
For <идентификатор> = <нач. знач.> To <кон. знач.> [ Step <шаг> ]
<оператор 1>
…
Next <идентификатор>
В заголовке оператора For указывается идентификатор управляющей переменной цикла (как правило, целочисленной). На первом шаге управляющей переменной присваивается начальное значение и выполняется тело цикла (оператор1, …). Затем значение управляющей переменной изменяется на значение шага и опять выполняется тело цикла и т.д.. Последний раз тело цикла выполняется, когда управляющая переменная равна конечному значению. Если шаг равен 1, его можно не указывать (действует принцип по умолчанию).
Пример: For I = 1 To 100
Y(I) = X(I) ^ 2 + X(I) ^ 3
S1 = S1 + X(I)
S2 = S2 + Y(I)
Next I
5. Разбиение строки программы, несколько операторов в одной строке,
задание комментариев в тексте программы
Если строчная запись некоторого оператора в тексте программы слишком длинная, то ее можно разбить и записать на нескольких строках. Для этого в конце строки, где должен быть сделан перенос, следует последовательно записать символы «пробел»+«подчеркивание». При этом нужно помнить, о следующих правилах: 1. Нельзя разбивать переносом строковые константы. 2. Допустимо не более семи продолжений одной и той же строки. 3. Сама строка программы не может состоять более чем из 1024 символов.
Пример: If X>5 Or Y<0 Then Z = (X + Y) ^ 2 _
Else Z = (X – Y) ^ 2
Использование знака «двоеточие» позволяет наоборот размещать в одной строке программы сразу несколько операторов.
Пример: X = X + 1 : Y = X + 2 : Z = X + Y
Работая с программой, удобно использовать комментарии, т.е. фрагменты программы, не являющиеся программными кодами и игнорируемые компилятором. Комментарии выполняют две важные функции: 1) делают программу легко читаемой, поясняя ее смысл, 2) позволяют временно отключать отдельные фрагменты программы при ее отладке.
В языке VBA можно использовать два способа задания комментариев по тексту программы: 1) с помощью апострофа ’ , который может быть поставлен в любом месте строки и тогда все последующие символы этой строки будут восприниматься как комментарий; 2) вместо апострофа может использоваться слово Rem (данный способ унаследован из классического Бейсика).
Примеры: 1) Dim I As Integer ’ I – переменная целого типа
2) Dim B As String
Rem B – строка символов
6. Типы процедур
Процедура – наименьшая единица программного кода, на которую можно ссылаться по имени и которая может выполняться независимо. В VBA можно использовать процедуры двух типов: подпрограммы и функции.
Подпрограмма является самостоятельной частью программы, у нее есть имя и могут быть аргументы. Подпрограмма может задавать выполнение некоторой последовательности действий, изменяя при этом значения своих аргументов. Кроме того, одна подпрограмма может ссылаться на другую подпрограмму. Для обращения к подпрограмме в программе следует указать ее имя, затем пробел, а далее через запятую перечислить значения аргументов подпрограммы.
Синтаксис(упрощенный):
Sub <идентификатор> ([<список аргументов>])
<оператор 1>
…
End Sub
Пример описания подпрограммы:
Sub Ras (X As Integer, Y As Double)
Z1 = X ^ 5 + Cos (X)
Z2 = X + Y + Sin (X)
End Sub
Данная подпрограмма по заданным значениям X и Y (аргументы) вычисляет значения переменных Z1 и Z2.
Примеры обращения к подпрограмме:
1) RAS 10, 12.45
2) A = 5 : B = – 678.32 : RAS A, B
В примере 1 подпрограмма RAS будет вычислять результат при значениях аргументов Х=10, Y=12,45. В примере 2 подпрограмма RAS в качестве исходных данных будет использовать Х=5 и Y= – 678.32.
Функция (так же, как подпрограмма) является самостоятельной процедурой, у которой есть имя, могут быть аргументы и которая задает выполнение некоторой последовательности действий. Главное отличие функции от подпрограммы в том, что она может возвращать результирующее значение по своему имени. Поэтому обращение к функции в программе может осуществляться через ее указание (ссылку на нее) в некотором выражении.
Синтаксис(упрощенный):
Function <идентификатор> ([<список аргументов>])
<оператор 1>
…
End Function
Пример описания функции:
Function Y (X As Integer) As Double
Y = (X – 1) / (X + 2)
End Function
Данная функция вычисляет значение Y (имя функции) по заданному значению X (аргумент).
Примеры обращения к функции:
1) Z = Y (25)
2) X = 12 : Z = 5 * Y(X) ^ 3
В примере 1 функция Y будет вычислена при исходном значении аргумента Х=25, а ее результат будет присвоен переменной Z. В примере 2 функция Y будет вычисляться для Х=12, а ее результат будет использован для вычисления Z (по формуле Z=5*Y(X)^3).