Краткий справочник по VBA. Справочник по vba краткий справочник по vba
Скачать 87.5 Kb.
|
ХПИ. ЭКММ. Курс «СППР». Лабораторные работы. Справочник по VBA Краткий справочник по VBA Работа в редакторе VBA Редактор VBA вызывается из меню: Сервис\Макрос\Редактор Visual Basic (или сочетаниие клавиш Alt-F11). Возвратиться из редактора VBA в рабочую книгу можно нажатием кнопки Вид Microsoft Excel (View Microsoft Excel), или тем же сочетанием клавиш (Alt-F11). Работа с элементами управления на рабочих листах Excel На рабочем листе для добавления элементов управления необходимо отобразить панель инструментов «Элементы управления»: . Для работы с элементами управления в период их конструирования в Excel используется режим конструктора, который активизируется нажатием соответствующей кнопки. В этом режиме отключена реакция элемента управления на события. Поэтому при включенном режиме конструктора можно видоизменять элемент управления и задавать его свойства. Двойное нажатие на элементе управления в этом режиме вызывает окно редактора VBA. После создания элемента управления повторное нажатие кнопки режима конструктора выключает этот режим. Синтаксис языка VBA Основные отличия синтаксиса языка VBA от синтаксиса языка Паскаль: - точка с запятой ";" не ставится - оператором присвоения является символ равно = - комментарии отделяются верхней одинарной кавычкой ' или зарезервированным словом Rem - ссылка на ячейку в программе (например, А3): Worksheets("имя листа").Cells(3,1).Value или так: Worksheets("имя листа").Range("А3").Value А для текущего листа просто: Cells(3,12).Value или так: Range("А3").Value - цикл завершается специальным словом Next Описание процедуры [Public l Private] Sub ИмяПроцедуры (СписокФормальныхПараметров) ОператорыТелаПроцедуры End Sub Типы данных В VBA имеется много различных типов данных. В таблице представлены типы, которые наиболее часто используются:
Значение текстового поля на форме имеет строковый тип. Поскольку текстовые поля используются для ввода данных (в частности и числовых), которые в дальнейшем могут участвовать в ходе выполнения программы в различных вычислениях, то во избежание ошибок вычислений необходимо введенные данные преобразовывать к числовому типу. Для этого в VB имеется ряд функций, представленных в таблице. (где х – выражение). Функции преобразования типов
Описание переменных Инструкция Dim предназначена для описания типа данных переменной на уровне модуля или процедуры. Например, следующая инструкция описывает переменную с типом integer: Dim N As Integer Инструкция Dim предназначена также для описания объектного типа переменных. Далее приводится описание переменной для нового экземпляра рабочего листа: Dim X As New Worksheet Если тип данных или тип объекта не задан, то по умолчанию переменная получает тип variant. Для обязательного описания всех переменных надо поместить в начале модуля инструкцию Option Explicit. Использование этой инструкции полезно при отладке программ, т. к. она позволяет легче отслеживать возможную путаницу в именах при наборе программы. Каждая переменная должна описываться отдельно! Ниже только вторая переменная определена как целого типа, первая имеет тип данных variant: Dim M, N As Integer Если необходимо описать переменную, доступную в различных подпрограммах, то она описывается специальной директивой Public вне локальных подпрограмм. Массивы Инструкция 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. Примеры Пример 1. Объявляется глобальная переменная для хранения суммы, при нажатии кнопки появляется окно ввода числа и оно добавляется к сумме, ответ сообщается ещё в одном окне. Public Sum As Single Private Sub CommandButton1_Click() Sum = Sum + InputBox("Введите число", "Обязательный ввод", 0) MsgBox "Sum= " + Str(Sum) End Sub Пример 2. Пример цикла, работающего до момента прекращения пользователям (по фопросу в диалоговом окне), запускается по кнопке. Private Sub CommandButton2_Click() Dim i As Integer 'счетчик итераций цикла Dim Final As Integer i = 0 'ноль итераций в начале Final = 1 'продолжать пока 1 Do While Final = 1 i = i + 1 Final = MsgBox("Продолжать ?", vbOKCancel) Loop MsgBox "Прошло итераций " + Str(i) End Sub Тот же пример реализованный циклом с постусловием Private Sub CommandButton3_Click() Dim Final As Integer i = 0 'ноль итераций в начале 'Final = 1 продолжать пока 1- уже НЕ НУЖНА-цикл с постусловием Do i = i + 1 Final = MsgBox("Продолжать ?", vbOKCancel) Loop While Final = 1 MsgBox "Прошло итераций " + Str(i) End Sub Пример 3. В процедуре объявляется динамический массив, вводится число его элементов, массив изменяется, заполняется циклом и считается сумма его элементов. Private Sub CommandButton1_Click() Dim A() As Single ‘динамический массив Dim N As Integer 'размер массива Dim sum As Single 'сумма элементов Dim i As Integer 'счетчик цикла N = InputBox("Введите число элементов массива", "Введите число", 5) ReDim A(l To N) For i = 1 To N A(i) = InputBox("Введите элемент " + Str(i) + " й", "Обязательный ввод", 0) sum = sum + A(i) Next i MsgBox "Сумма элементов " + Str(sum) End Sub РАЗДАТОЧНЫЙ МАТЕРИАЛ |