Файл: Для заочников (алгор-ия и VBA).doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 15.11.2021

Просмотров: 95

Скачиваний: 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 = (XY) ^ 2

Использование знака «двоеточие» позволяет наоборот размещать в одной строке программы сразу несколько операторов.

Пример: X = X + 1 : Y = X + 2 : Z = X + Y

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

В языке VBA можно использовать два способа задания комментариев по тексту программы: 1) с помощью апострофа ’ , который может быть поставлен в любом месте строки и тогда все последующие символы этой строки будут восприниматься как комментарий; 2) вместо апострофа может использоваться слово Rem (данный способ унаследован из классического Бейсика).

Примеры: 1) Dim I As IntegerI – переменная целого типа

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).