Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_VBA.doc
Скачиваний:
12
Добавлен:
27.03.2016
Размер:
164.35 Кб
Скачать

8.5. Массивы переменных

Массивы переменных имеют произвольную размерность (одномерные, двумерные, …) объявляют так:

  1. локальный массив:

Dim <Arr> (размерность) As<type>

2. глобальный массив:

Public <Arr> (размерность) As<type> где Arr – имя массива; type – тип элементов; размерность массива цифра, указывающая размер массива.

Примеры:

Одномерный: Dim Ball (5) As Integer – индекс с 0 или Dim Basket (45 To 74) as Single – 30 элементов массива номера с 45 по 74.

Двумерный: Dim Foot(1,3) as Long – 8 элементов массива или комбинация: Dim Cross(1,4 To 5) As Date 4 элемента массива: 0,4;0,5;1,4;1,5.

Трехмерный: Public Game (2,2,3) As Single – 36 элементов.

8.6. Объявление констант

Константы объявляют с помощью оператора:

Const <const>=<значение>

Здесь <const> – имя константы; <значение> – значение константы.

Они тоже есть локальные и глобальные (Public).

Примеры:

Public Const Date1=#12.12.96# или Const Date2=#12.12.97#

В VBA есть встроенные константы, которые применяют без специального объявления, но они начинаются с символов XL.

8.7. Операции языка vba

В языке VBA содержатся следующие операции.

  1. Математические операции: +, -, *, /, \ (целочисленное деление).

ОП1 Mod ОП2 – остаток от деления на целое.

ОП1^ОП2 – введение в степень.

  1. Операции отношения: <, >, <=, >=, <> не равно, =

ОП1 Is ОП2 – сравнение двух операторов, содержащих ссылки на объекты. (проверяется, является ли значение пустым для объектов с NOOL)

ОП1 Like ОП2 – сравнение двух строковых выражений.

  1. Логические операции: and – логическое умножение (получаем 1, если оба операнда равны 1, а иначе всегда 0), or логическое сложение (получаем 1, если хотя бы один операнд равен 1, а 0, если все операнды равны 0), xor – исключающее или (возвращает 1, если один оператор возвращает 1); Not – логическое отрицание.

  2. Другие операции:

Строка 1 & Строка 2 – сложение строк (конкатенация).

Операции выполняются в следующей последовательности:

1. вызов функций и скобки;

2. возведение в степень (^);

3. - – смена знака;

4. умножение (*), деление (/);

5. деление целых чисел нацело (\);

6. mod;

7. сложение (+), вычитание(-);

8. операции сравнения (<,>,<=, >=, <>, =);

9. логическое отрицание (not);

10. логическое умножение (and);

11. логическое сложение (or);

12. исключающее или (xor).

Имя переменной длиной не более 255 символов. Первый символ – буква, не может быть символов ,, #, $, %, & - это специальные символы.

Перенос строки – символы «_» в конце строки обеспечивают то, что последняя строка является продолжением следующей (до семи строк – 1024 символа). Если разбиваем текстовую константу, в начале второй строки ставим & и текст в кавычках «...».

8.8.Встроенные функции vba

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

Обычно они возвращают значение (не массив), которое может иметь тип Variant или String, но в некоторых, если к имени справа добавить $: Chr$; Lcase$; Left$… Они бывают математическими, строковыми, даты и времени (Date()), преобразования типов данных [CSTR()] файловой системы (FILELEN() – определяет длину файла в байтах).

8.9. Функции пользователя

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

Function <имя процедуры> (аргументы) As <type>

Тело процедуры

End Function

Примеры:

Sub Proc_A()

S as Single: Dim LL as Single; Dim HH as Single

LL=12: HH=23: S=Sq(LL;H)/2+1200

End Sub

Function Sq(H as Single; L as Single) as Single

Sq=H*L: End Function

8.10. Операторы языка VBA

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

Оператор присваивания имеет вид: <var>=<formula>

Это самый распространённый оператор.

Примеры:

Place=”d:\windows\system”

File = “Game Tree.Exe”

Student_Card(100).Group=133

8.10.2. Оператор комментариев

Это пояснение к программе. Начинается в строке с произвольного места программы символом ‘.

8.10.3. Процедуры

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

У них стандартное оформление:

Sub <имя - процедуры> (аргументы)

….

Тело процедуры (операторы)

….

End Sub

Оператор Sub – объявляет процедуру, задает имя и указывает состав аргументов, передаваемых при вызове процедуры из программы. Ему всегда соответствует свой оператор End Sub.

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

1. Вызов процедуры осуществляется по имени: Proc_B

2. Если он в другой процедуре другого модуля, то [Модуль#].Proc_B

3. Из другого приложения:

[RW1.XLS].[Модуль #].Proc_B

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

Private Sub Proc_B ()

….

End Sub

Если не хотим, чтобы к модулю обращались из других рабочих книг, то указывают:

Option Private Module

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

Объявление аргументов в заголовке процедуры имеет вид:

Sub Proc_ B (Val1 As Single; Val2 As Date;…)

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

Пример

Sub SquarPr (L As Single; H As Single; S As Single; Optional F )

If IsMissing(F) Then F=100 ‘IsMissing проверяет наличие аргумента F, если F не задано, по умолчанию F присваивают 100.

S=L*H : End Sub

Вызов: Sub Proc_A()

I способ: Dim Sq as Single

SquarPr 12,23,sq ‘могут быть через ,- зависит от установки.

End Sub

II способ: Sub Proc_A()

Dim Sq as Single: Dim LL as Single: Dim HH as Single

LL=12: HH=23: SquarPr LL HH Sq

End Sub

III способ: Sub Proc_A()

Dim Sq as Single: Dim LL as Single: Dim HH as Single

LL=12: HH=23: SquarPr L:=LL, H:=HH, S:=Sq

End Sub

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

Static <var> As <type>

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

Для модификации:

Sub SquarPr (ByVal L As Single, ByVal H As Single, S As Single)

S=L*H: L=10: H=20: End Sub

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

Пример

Sub Proc_A()

Dim Sq as Single: Dim LL as Single: Dim HH as Single

LL=12: HH=23: SqarPr L:=(LL), H:=(HH), S:=Sq

End Sub

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