Операторы VBA
Программа на VBA – это последовательность операторов.
При составлении программ следует придерживаться ряда соглашений. Так, на одной строке можно разместить несколько операторов. Между операторами в одной строке ставится двоеточие.
Любую строку можно разбить на две, расположив в конце первой знаки символов «Пробел» + «Знак подчеркивания» ( _), в этом случае вторая строка будет считаться продолжением первой.
Для того, чтобы сделать программу легко читаемой используют комментарии. В языке VBA существуют два способа ввода комментариев: применение апострофа (‘), который можно поставить в любом месте строки, и зарезервированное слово Rem вместо апострофа.
1. Оператор Dimпредназначен для объявления типов переменных.
Примеры:
1. Dim A As Integer – переменная A объявляется как целое, т.е. в ней будут храниться только целые величины.
2. Dim D As Date – объявляется переменная D для хранения дат.
3. Dim Фамилия, Наименование As String – объявлютсяпеременные. Фамилия и Наименование, предназначеные для хранения текста.
4. Dim B(12) As Integer – объявляется одномерный массив (вектор), состоящий из 12 целых чисел, причем по умолчанию первый элемент массива будет B(0), а последний B(12).
5. Dim B(3,3) As Single – объявляется двумерный массив 3х3 (матрица), состоящий из действительных чисел.
Если не указан тип переменной, то по умолчанию используется тип Variant. Однако указание конкретного типа переменной делает программу надежнее и убыстряет ее работу, т.к. VBA не требуется тратить время на распознавание необъявленной переменной при каждом обращении к ней.
Если размер массива M заранее не известен и определяется в ходе программы, то при описании массива число элементов не указывается, и массив определяется так:
Dim M() As Integer
После определения числа элементов массива, например, N, необходимо записать оператор
Redim M(N)
2. Оператор присваивания предназначен для присваивания переменной какого-либо значения.
Синтаксис:
Переменная (или свойство объекта) = выражение.
Примеры:
1. а=5 – переменной А присвоить значение 5;
2. b=«Менеджер» – переменной b присвоить значение «Менеджер»;
· Адрес=Sheets("Организации").Cells(2,2) – переменной Адрес присвоить содержимое ячейки B2, которая находится на листе Организации в текущей рабочей книге;
· Фамилия=UserForm1.TextBox1.Text – переменнойФамилия присвоить содержимое поля TextBox1 пользовательской формы UserForm1.
o Оператор With/End withизбавляет программиста от большого количества повторений имени одного и того же объекта.
Синтаксис:
With объект
оператор1
оператор2
..............
..............
операторN
End with
Например, вместо последовательности операторов
UserForm1.TextBox1.Text = Date
UserForm1.TextBox2.Text = “ “
UserForm1.ComboBox1.Text = “ “
можно записать так
With UserForm1
.TextBox1.Text = Date
.TextBox2.Text = “ “
.ComboBox1.Text = “ “
End with
Пример 2.
REM На листе Лист1 в столбце А, начиная со второй строки, записаны ‘тарифы сотрудников. Заполним поле со списком ComboBox1 в ‘пользовательской форме UserForm1
‘Первая строка программы – на листе Лист1 в столбце А ‘подсчитывается количество заполненных ячеек, результат ‘присваивается переменной N
N=Application.CountA(Sheets(“Лист1”).Range(“A:A”) ).
D=”A2:A”&Cint(N)
Sheets(“Лист1”).Range(D).Name=”Тарифы”
With UserForm1
.TextBox1.Text = Date
.TextBox2.Text = “ “
.ComboBox1.Text = “ “
.ComboBox1.Rowsource = “Тарифы “
End with
1. Условный оператор If/Then/Else – позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие
Синтаксис:
If условие Then операторы1 [Else операторы2]
Если условие истинно, то выполняются операторы1, в противном случае выполняются операторы2.
Допускается также использование сложного условного оператора, который записывается в виде блока:
If условие1 Then
операторы1
ElseIfусловие2 Then
операторы2
Else
операторы3
End If
Примеры:
With UserForm1
Фамилия=.TextBox1.Text
If Фамилия =”“ Then MsgBox”Вы не ввели фамилию”
End with
REM При установленном флажке номер 1 клиенту ‘предоставляется скидка 5%
‘ Сумма – количество денег, выплачиваемых клиентом
‘ Стоимость товара хранится в переменной Стоимость
If UserForm1.CheckBox1.Value = True Then
Сумма=Стоимость-Стоимость*0.05
Else Cумма=Стоимость
End If
1) REM Предположим, что Тариф – это установленный тариф, а Время ‘–отработанное время. Время и тариф вводятся в поля ввода ‘соответственно вTextBox1 и TextBox2. Зарплата рассчитывается по ‘формуле Тариф*Время. Напишем программу для вывода в форму ‘рассчитанной зарплаты. Label4 – надпись, подготовленная для ‘вывода значения зарплаты
If IsNumeric(TextBox1.Text)=True And _
IsNumeric(TextBox2.Text)=True Then
Тариф=TextBox1.Text
Время=TextBox2.Text
Label4.Caption=Тариф*Время
End If
В первом примере работа ведется с пользовательской формой номер один. Переменной Фамилия присваивается содержимое поля ввода номер один. Затем осуществляется проверка, было ли что-либо введено в поле ввода (не пуста ли переменная Фамилия). Если переменная Фамилия пуста, то на экран выводится окно сообщения.
Во втором примере – первые строки, начинающиеся со слова REM и апострофов, – это комментарии, объясняющие назначения переменных. С помощью условного оператора определяется сумма, выплачиваемая клиентом.
В третьем примере осуществляется проверка того, введены ли в поля ввода числа. Если в два поля введены числа, то переменным присваиваются значения полей ввода и надписи присваивается значение результата умножения тарифа на время.
1) Оператор безусловного перехода GoToпредназначен для задания перехода на указанную строку внутри программы.
Синтаксис:
GoTo Строка
Обязательный аргумент Строка может быть любой меткой строки или номером строки.
Пример:
If IsNumeric(TextBox1.Text)=False Then GoTo Ошибка
......
Ошибка: MsgBox “Ошибка при вводе чисел!”
В приведенном примере выполняется проверка того, введено ли число в поле ввода номер один. Если введено не число, то осуществляется переход на строку с меткой Ошибка и на экран выводится сообщение.
2) Оператор цикла For/To/Nextпредназначен для программирования повторяющихся фрагментов, т.е. для описания циклических алгоритмов.
Синтаксис:
For переменная=M1 To M2 [Step M3]
операторы
Next
M1, M2, M3 – выражения. Оператор цикла повторяет выполнение группы операторов, пока переменная (счетчик) изменяется от начального значения М1 до конечного М2 с указанным шагом М3. Если шаг не указан, то он полагается равным 1.
Пример:
For I=2 To 10
Фамилия = Sheets(“Сотрудники”).Cells(I,1)
UserForm1.ComboBox1.AddItem Фамилия
Next
В приведенном примере предполагается, что на листе «Cотрудники» в первом столбце записаны фамилии сотрудников, которые нужно внести в список поля со списком номер один пользовательской формы номер один. Алгоритм работы программы:
1) Переменной I присваивается значение 2.
2) Переменной Фамилия присваивается значение ячейки А(I,1), расположенной на листе «Сотрудники». (При первом выполнении цикла это ячейка А(2,1))
3) В список поля со списком ComboBox1 добавляется элемент из переменной Фамилия.
4) К значению переменной I добавляется 1 (если шаг не указан, то он полагается равным 1). Выполняется проверка, не превысила ли величина I 10 (конечного значения переменной I, в примере М3=10)? Если величина I еще меньше или равна 10, то выполняются пункты 2-4, в противном случае работа цикла заканчивается.
Таким образом, приведенная программа позволяет заполнить данными список поля со списком ComboBox1.
Основные алгоритмы, используемые при решении
экономических задач
Основные алгоритмы рассмотрим на следующем примере. В выполнении работы по договору участвовали сотрудники разных отделов. В таблице, на листе «Лист1» представлены данные о количестве отработанных часов каждым из сотрудников (рис.8).
Рис.8.Данные о количестве отработанных часов
сотрудниками фирмы
Дата добавления: 2014-12-02; просмотров: 3749;