Основные понятия vba
Одномерные массивы
Чтобы создать массив, нужно определить его имя, количество элементов и тип данных. Массивы создаются при помощи оператора Dim.
Dim ИмяМассива (размер) As ТипДанных
Если вместо слово Dim набрать слово Public, будет создан массив, областью видимости которого станет вся программа.
Пример:
Dim Моймассив (3) As integer
Dim МойМассив (1 to 3) As integer
В большинстве программ VBA при создании массива его сразу инициализируют, присвоив каждому элементу нулевое значение или пустую строку (используя цикл for next).
Dim сотрудник (4) As string
Dim i As integer
For i=0 to 4
Сотрудник (i)= “”
Next i
Обычно элементы массива содержат значения, относящиеся к одному типу. Если необходимо создать массив, в котором будут содержаться разные типы данных, используется тип массива object.
Dim MyMassiv (2) As object
MyMassiv (0) = ”Спрут”
MyMassiv (1) = 56
MyMassiv (2) = 3.1415
Двухмерные массивы и более
Порядок создания многомерных массивов такой же, только указывается соответствующая размерность.
Dim ДвухММассив (строки,столбцы) As типДанных
Dim ТрехММассив (X, Y, Z) As типДанных
Динамические массивы
Динамические массивы создаются с помощью оператора dim, private, public, static, причем список размерности опускается. Затем их размер устанавливается с помощью оператора ReDim во время выполнения программы.
ReDim [Preserve] varname (subscripts)[As type] [, varname (subscripts) [As type]]
Необязательное ключевое слово preserve приводит к тому, что VBA сохраняет данные в имеющемся массиве когда изменяется размер массива с помощью ReDim.
Varname – имя существующего массива.
Subscripts – размерность массива.
Примеры использования оператора ReDim:
Dim Month () As string – объявляет динамический массив Month
ReDim Month (1 to 30) – изменяет размер массива до 30 элементов
ReDim Month (31) – изменяет размер массива до 31элемента
ReDim Preserve Month (1 to 31) – изменяет размер массива до 31 элемента, сохраняя содержимое
Dim Table () As Integer – объявляет динамический массив Table
ReDim Table (3, 15) – делает массив двухмерным
ReDim Table (4, 20) – изменяет размер двухмерного массива
ReDim Preserve Table (4, 25) – только изменяет последний размер массива
Dim Mas As Variant – объявляет переменную типа variant
ReDim Mas (20) As Integer – создает массив 20 целых чисел в variant
Можно создать массив поэлементно:
Dim B (1 to 2, 1 to 2) As single
B (1, 1) = 2
B (1, 2) = 5
B (2, 1) =4
B (2, 2) =3
Получаем: 2 5
4 3
При работе с массивами можно использовать следующие функции и процедуры:
Переопределение переменной в типизированный массив
Array (списокАргументов)
Dim День As variant
День = Array (“Пн”, ”Вт”, ”Ср”, …)
VBA имеет две функции, которые отслеживают верхний и нижний индекс предела массива
Lbound (имяМассива [, размерность])
Ubound (имяМассива [, размерность])
Оператор Erase позволяет выполнять одну из двух задач, в зависимости от того, каким будет массив. Для статических массивов Erase очищает все элементы массива указанного массива, переустанавливая массив в первоначальное состояние.
Для динамических массивов Erase полностью удаляет массив из памяти.
Erase array1 [, array2,…]
Типы данных, возвращаемые пользователю
Функции преобразования типов:
Функции |
Возвращаемый тип |
Asc |
Integer |
cBool |
Boolean |
CByte |
Byte |
CCur |
Currency |
CDate |
Date |
CDbl |
Double |
cDec |
Decimal |
CInt |
Integer |
CLng |
Long |
CSng |
Single |
CStr |
String |
CVar |
Variant |
Chr |
Символ |
Private Sub CommandButton1_Click()
Dim пер1, пер2, summa As Integer
Пер1 = CInt (textbox1, text)
Пер2 = CInt (textbox2, text)
Summa = пер1+пер2
Label3.caption = CSng (summa)
End sub
Функции работы со строками:
Функции |
Пример |
Описание |
Len (str) |
Из a=len(“персонажи”) следует a=9 |
Определяет длину строки |
Left (<строка>,<длина>) |
Left(“1234string”,4)=1234 |
Выбирает из аргумента строка указанное количество символов слева |
Right (<строка>,<длина>) |
Right(“1234string”,6)=string |
Выделяет из аргумента строка указанное количество символов справа |
Mid (<строка>,<старт>[,<длина>]) |
Mid (“12345678,4,3) - 456 |
Выделяет из аргумента строка под строку с указанным количеством символов, начиная с позиции старт |
Mid (<строка>,<старт>) |
Mid (“12345678,4,3) - 45678 |
Выделяется под «строка» с позиции старт до конца |
LTrim (<строка>) |
LTrim(“ печать”) = “печать” |
Удаляет пробелы в начале строки |
RTrim (<строка>) |
RTrim(“печать ”) = “печать” |
Удаляет пробелы в конце строки |
Trim (<строка>) |
Trim(“ печать ”) = “печать” |
Удаляет пробелы с обоих сторон строки |
InStr([<старт>,]<строка 1>,<строка 2>[,<сравнение>]) |
Instr(“C:\temp\fest.mdb”,”test”)=9 Если искомая строка не находится в указанной строке, функция возвращает ноль. |
Производит поиск подстроки в строке, возвращает позицию первого вхождения строки (строка 2) в строку (строка 1) (старт – позиция, с которой начинается поиск) |
Функции преобразования строк:
LCase (<строка>) – преобразует все символы строки к нижнему регистру
UCase(<строка>) – преобразует все символы строки к верхнему регистру
StrConv(<строка>,<преобразование>) – выполняет несколько типов преобразования строки, в зависимости от второго параметра
Space(<число>) – создает строку, состоящую из указанного числа пробелов
String(<число>,<символ>) – создает строку, состоящую из указанного в первом аргументе числа символов
