- •Вопросы к экзамену
- •Ключевые слова Private, Public и Static
- •Как видим, для объявления константы используется ключевое слово Const, в отличии от переменных, константные значения занимают меньше места. Приоритеты операций
- •Операции
- •Оператор присваивания
- •Vba функции работы со строками
- •Vba одномерный массив
- •Vba многомерный и двумерный массив
Vba одномерный массив
Одномерные VBA массивы представляют из себя список, который хранит данные заданного типа, например:
Dim MyArr(2) As Integer
Тут мы объявили одномерный VBA массив, состоящий из трех элементов (нумерация элементов начинается с нуля) и задали целый тип данных. Можно и не задавать тип данных, например:
Dim MyArr(2)
Для примера, создадим форму с темя текстовыми метками (объект Label) и одной кнопкой и попишем в редакторе кода:
Private Sub CommandButton1_Click()
Dim MyArr(2) As Integer
MyArr(0) = 10
MyArr(1) = 20
MyArr(2) = 30
Label1.Caption = "Значение: " & MyArr(0)
Label2.Caption = "Значение: " & MyArr(1)
Label3.Caption = "Значение: " & MyArr(2)
End Sub
Private Sub UserForm_Initialize()
Label1.Caption = ""
Label1.FontSize = 15
Label1.ForeColor = vbBlue
Label2.Caption = ""
Label2.FontSize = 15
Label2.ForeColor = vbRed
Label3.Caption = ""
Label3.FontSize = 15
Label3.ForeColor = vbGreen
CommandButton1.Caption = "Значения"
End Sub
Тут при нажатии на кнопку происходит объявление одномерного VBA массива с тремя целыми значениями, далее через порядковый номер происходит присвоение данные и их запись в свойство Caption. Массив не обязательно должен хранить однотипные данные, например:
Private Sub CommandButton1_Click()
Dim MyArr(2)
MyArr(0) = "Строка"
MyArr(1) = #12/30/1986#
MyArr(2) = 124.55
Label1.Caption = "Значение: " & MyArr(0)
Label2.Caption = "Значение: " & MyArr(1)
Label3.Caption = "Значение: " & MyArr(2)
End Sub
В данном случае мы присвоили значения разных типов (строка, дата и вещественное число), при этом, сам тип данных для массива VBA мы не указывали, иначе, произошла бы ошибка Type mismatch (несоответствие типов).
Vba многомерный и двумерный массив
Помимо одномерных, можно объявлять и многомерные массивы до 60 измерений, например:
Private Sub CommandButton1_Click()
Dim MyArr(0 To 1, 0 To 3) As Integer
MyArr(0, 0) = 10
MyArr(0, 1) = 11
MyArr(0, 2) = 12
MyArr(0, 3) = 13
MyArr(1, 0) = 20
MyArr(1, 1) = 21
MyArr(1, 2) = 22
MyArr(1, 3) = 23
Label1.Caption = MyArr(0, 0) & MyArr(0, 1) & MyArr(0, 2) & MyArr(0, 3)
Label2.Caption = MyArr(1, 0) & MyArr(1, 1) & MyArr(1, 2) & MyArr(1, 3)
End Sub
Строка Dim MyArr(0 To 1, 0 To 3) As Integer говорит, что мы объявили двумерный VBA массив размером два на четыре, при этом, мы сразу указали нумерацию, для сравнения:
Dim MyArr(2 To 3, 3 To 5) As Integer
MyArr(2, 3) = 10
MyArr(2, 4) = 11
MyArr(2, 5) = 12
MyArr(3, 3) = 20
MyArr(3, 4) = 21
MyArr(3, 5) = 22
Label1.Caption = MyArr(2, 3) & MyArr(2, 3) & MyArr(2, 5)
Label2.Caption = MyArr(3, 3) & MyArr(3, 4) & MyArr(3, 5)
Хотя можно прописать и так MyArr(2,3), в этом случае нумерация будет идти от нуля автоматически.
Динамические массивы VBA – довольно часто может возникнуть ситуация, когда точно количество элементов массива не известно, или же его размер надо изменить. При объявлении динамического массива его размер не указывается:
Dim MyArr ()
Для изменения размера используется ключевое слово ReDim:
ReDim MyArr(6)
ReDim автоматически удаляет все предыдущие значения, что бы они сохранились (например, предыдущий размер составлял 4 элемента и хранил данные, а теперь надо расширить размер до 6 элементов, сохранив предыдущие значения), используется ключевое слово Preserve:
ReDim Preserve MyArr(10)
Оператор Option Base 1 – данные оператор позволяет указать, что бы нумерация элементов начиналась не с нуля, а с единицы.
Некоторые функции – язык VBA предоставляет в распоряжение пользователя функции для работы с массивами, например:
Array() – данная функция VBA позволяет сразу задавать значения одномерного массива:
Dim MyArr
MyArr = Array(10, 22, 100, 5)
Видим, что сначала надо объявить переменную, а уже потом использовать функцию для формирования одномерного VBA массива.
Erase – очищает содержимое:
Erase MyArr
Типовые задачи обработки одномерных массивов. Примеры.
Многомерные массивы (на примере объекта Cells). Примеры.
Функции и инструкции для работы с массивами. Примеры.
Собственные процедуры и функции. Описание и вызов. Способы задания аргументов (по ссылке, по значению, обязательные, необязательные, по умолчанию, присваивание). Примеры.
Работа с файлами данных в VBA. Примеры.
В билете 1 вопрос и 1 задача.
