- •7 Хпи. Экмм. Курс «сппр». Лабораторные работы. Справочник по vba Краткий справочник по vba Работа в редакторе vba
- •Работа с элементами управления на рабочих листах Excel
- •Синтаксис языка vba
- •Описание процедуры
- •Типы данных
- •Описание переменных
- •Массивы
- •Динамические массивы
- •Оператор выбора
- •Встроенные диалоговые окна
- •Примеры
Массивы
Инструкция Dim может использоваться для объявления массивов. Примеры объявления массивов:
Dim B(3, 3) As Single
Dim A(12) As Integer
Первая строка объявляет двумерный массив 3x3 (матрицу), состоящий из действительных чисел. Вторая строка объявляет одномерный массив (вектор) из 12 целых чисел, причем по умолчанию первый элемент массива будет А(0), а последний А(11). В этом случае говорят, что 0 — базовый индеке. Можно изменить базовый индекс, написав в начале листа модуля инструкцию Option Base1. После этого индексы массивов А и В будут начинаться с единицы. Другим способом изменения начального (базового) индекса является его явное указание при объявлении массива:
Dim B(1 То 3, 1 То 3) As Single
Dim A(1 To 12) As Integer
Массив в программе определяется поэлементно. Например:
Dim B(1 To 2, 1 То 2) As Single
B(1,1)=2
В(1,2)=4
В(2,1)=1
Динамические массивы
Иногда в процессе выполнения программы требуется изменять размер массива. В этом случае первоначально массив объявляют как динамический. Для этого при объявлении массива не надо указывать размерность, например:
Dim R() As Single
В программе следует вычислить необходимый размер массива и связать его с некоторой переменной, например n, затем изменить размер динамического массива с помощью оператора ReDim.
ReDim R(l To n)
Операторы
Условный оператор
Однострочная форма (когда в каждой ветви не более одного оператора):
If <условие> Then <оператор> [Else <оператор>]
Блочная форма (когда в каждой ветви более одного оператора):
If <условие> Then
<операторы1>
Else
<операторы2>
End If
Расширенная модификация блочной формы (когда несколько условий):
If <условие1> Then
<операторы1>
ElseIf <условие2> Then
<операторы2>
...
[Else
<операторыN>]
End If
Операторы цикла
В языке VBА есть два вида операторов цикла: условный и со счетчиком.
Условный цикл:
а) с верхним окончанием
Do {While | Until} <условие>
<операторы тела цикла>
Loop
б) с нижним окончанием (используется тогда, когда операторы тела цикла должны выполняться хотя бы один раз)
Do
<операторы тела цикла>
Loop {While | Until} условие
Оператор Exit Do обеспечивает немедленный выход из цикла.
Цикл со счетчиком (используется, если число повторений известно заранее):
For счетчик = начальное значение То конечное значение Step шаг
операторы тела цикла
Next счетчик
Если конструкция Step опущена, то подразумевается шаг =+1.
Оператор немедленного выхода из цикла Exit For.
Оператор выбора
Select Case <выражение
Case <списоквыражений1 <оператор1>
Case <списоквыражений2 <оператор2>
…
[Case Else <оператор else> ]
End Select
Встроенные диалоговые окна
InputBox - выводит на экран диалоговое окно, содержащее сообщение, и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа string, содержащее текст, введенный в поле.
Синтаксис:
InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])
Аргументы:
prompt – строковое выражение, отображаемое как сообщение в диалоговом окне. Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символа возврата каретки (Сhr(13)), символа перевода строки (chr (10)) или комбинацию этих символов (Chr( 13) & Chr (10))
title – строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения
default – строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым
xpos – числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана. Если этот аргумент опущен, диалоговое окно выравнивается по центру экрана по горизонтали
ypos – числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана. Если этот аргумент опущен, диалоговое окно помещается по вертикали примерно на одну треть высоты экрана
Для вывода результата можно использовать оператор MsgBox, который в простейшем случае имеет вид:
MsgBox <”Сообщение”>
Более сложный синтаксис имеет функция MsgBox. Эта функция выводит на экран диалоговое окно, содержащее сообщение, и устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата.
Синтаксис: MsgBox (prompt [, buttons] [, title] [, helpfile, context])
Аргументы:
prompt – строковое выражение, отображаемое как сообщение в диалоговом окне
buttons – числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию этого аргумента равняется 0(VbOKOnly), 1= VbOKCancel, 2=VbAbortRetryIgnore, 3= vbYesNoCancel, ….
title – строковое выражение, отображаемое в строке , заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения
helpfile – строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан, необходимо указать также аргумент context
context – числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо указать также аргумент helpfile
Возвращаемые результаты:
vbOK = 1, vbCancel = 2, …, vbYes =6, vbNo =7.