![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Операторы VBA
Программа на VBA – это последовательность операторов. При составлении программ следует придерживаться ряда соглашений. Так, на одной строке можно разместить несколько операторов. Между операторами в одной строке ставится двоеточие. Любую строку можно разбить на две, расположив в конце первой знаки символов «Пробел» + «Знак подчеркивания» (_), в этом случае вторая строка будет считаться продолжением первой. Для того, чтобы сделать программу легко читаемой используют комментарии. В языке VBA существуют два способа ввода комментариев: применение апострофа (‘), который можно поставить в любом месте строки, и зарезервированное слово Rem вместо апострофа.
1. Оператор Dim предназначен для объявления типов переменных. Примеры: · Dim A As Integer – переменная A объявляется как целое, т.е. в ней будут храниться только целые величины. · Dim D As Date – объявляется переменная D для хранения дат. · Dim Фамилия, Наименование As String – объявлютсяпеременные. Фамилия и Наименование, предназначеные для хранения текста. · Dim B(12) As Integer – объявляется одномерный массив (вектор), состоящий из 12 целых чисел, причем по умолчанию первый элемент массива будет B(0), а последний B(12). · Dim B(3, 3) As Single – объявляется двумерный массив 3х3 (матрица), состоящий из действительных чисел. Если не указан тип переменной, то по умолчанию используется тип Variant. Однако указание конкретного типа переменной делает программу надежнее и убыстряет ее работу, т.к. VBA не требуется тратить время на распознавание необъявленной переменной при каждом обращении к ней. Если размер массива M заранее не известен и определяется в ходе программы, то при описании массива число элементов не указывается, и массив определяется так: Dim M() As Integer После определения числа элементов массива, например, N, необходимо записать оператор Redim M(N) 2. Оператор присваивания предназначен для присваивания переменной какого-либо значения. Синтаксис: Переменная (или свойство объекта) = выражение. Примеры: · а=5 – переменной А присвоить значение 5; · b=«Менеджер» – переменной b присвоить значение «Менеджер»; · Адрес=Sheets(" Организации").Cells(2, 2) – переменной Адрес присвоить содержимое ячейки B2, которая находится на листе Организации в текущей рабочей книге; · Фамилия=UserForm1.TextBox1.Text – переменной Фамилия присвоить содержимое поля TextBox1 пользовательской формы UserForm1. 3. Оператор 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
4. Условный оператор If/Then/Else – позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие Синтаксис: If условие Then операторы1 [ Else операторы2] Если условие истинно, то выполняются операторы1, в противном случае выполняются операторы2. Допускается также использование сложного условного оператора, который записывается в виде блока: If условие1 Then операторы1 ElseIf условие2 Then операторы2 Else операторы3 End If
Примеры: 1. With UserForm1 Фамилия=.TextBox1.Text If Фамилия =”“ Then MsgBox”Вы не ввели фамилию” End with 2. REM При установленном флажке номер 1 клиенту ‘предоставляется скидка 5% ‘ Сумма – количество денег, выплачиваемых клиентом ‘ Стоимость товара хранится в переменной Стоимость If UserForm1.CheckBox1.Value = True Then Сумма=Стоимость-Стоимость*0.05 Else Cумма=Стоимость End If 3. REM Предположим, что Тариф – это установленный тариф, а Время ‘–отработанное время. Время и тариф вводятся в поля ввода ‘соответственно вTextBox1 и TextBox2. Зарплата рассчитывается по ‘формуле Тариф*Время. Напишем программу для вывода в форму ‘рассчитанной зарплаты. Label4 – надпись, подготовленная для ‘вывода значения зарплаты If IsNumeric(TextBox1.Text)=True And _ IsNumeric(TextBox2.Text)=True Then Тариф=TextBox1.Text Время=TextBox2.Text Label4.Caption=Тариф*Время End If В первом примере работа ведется с пользовательской формой номер один. Переменной Фамилия присваивается содержимое поля ввода номер один. Затем осуществляется проверка, было ли что-либо введено в поле ввода (не пуста ли переменная Фамилия). Если переменная Фамилия пуста, то на экран выводится окно сообщения. Во втором примере – первые строки, начинающиеся со слова REM и апострофов, – это комментарии, объясняющие назначения переменных. С помощью условного оператора определяется сумма, выплачиваемая клиентом. В третьем примере осуществляется проверка того, введены ли в поля ввода числа. Если в два поля введены числа, то переменным присваиваются значения полей ввода и надписи присваивается значение результата умножения тарифа на время. 5. Оператор безусловного перехода GoTo предназначен для задания перехода на указанную строку внутри программы. Синтаксис: GoTo Строка Обязательный аргумент Строка может быть любой меткой строки или номером строки. Пример: If IsNumeric(TextBox1.Text)=False Then GoTo Ошибка ...... Ошибка: MsgBox “Ошибка при вводе чисел! ” В приведенном примере выполняется проверка того, введено ли число в поле ввода номер один. Если введено не число, то осуществляется переход на строку с меткой Ошибка и на экран выводится сообщение. 6. Оператор цикла 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.Данные о количестве отработанных часов сотрудниками фирмы
|