Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Запуск интегрированной среды VBAСтр 1 из 9Следующая ⇒
Основные элементы VBA
Что такое VBA
Существует целый ряд систем программирования, позволяющих в той или иной степени реализовать концепцию объектно-ориентированного подхода при разработке программных средств. К ним относятся С++, Java, Visual Basic, Object Pascal. Язык VBA (Visual Basic for Application) – это подмножество VB, которое включает почти все его средства создания приложений, структуры данных и управляющие структуры, возможность создания пользовательских типов данных. В отличие от VB, VBA не является языком объектно-ориентированного программирования в строгом смысле этого слова, но в нем широко используются элементы объектно-ориентированного подхода и связанные с ним понятия. С помощью VBA можно легко и быстро создавать пользовательские приложения, используя единую для всех офисных программ среду и язык. Научившись разрабатывать приложения для одной офисной программы, например Excel (в которой, как наиболее популярной офисной программе, мы будем работать), можно создавать приложения и для других офисных программ, например Access VBA — относительно легкий язык программирования. Он прост в освоении и позволяет быстро получать ощутимые результаты — конструировать профессиональные приложения, решающие практически все задачи, встречающиеся в среде Windows. При этом создание многих приложений с использованием VBA проще и быстрее, чем при помощи других языков программирования.
Структура редактора VBA При программировании важно знать не только язык программирования, но хорошо ориентироваться в среде разработки. Среда VBA является интегрированной (как и DElhpi, Borland C++) средой, т.е. объединяет в себе несколько составляющих: · Компилятор, · Редактор текстов, · Средства отладки, · Визуальный конструктор форм · И т.д.
Программный код VBA набирается в редакторе Visual Basic.
Запуск интегрированной среды VBA Редактор VBA активизируется командой Сервис, Макрос, Редактор Visual Basic (Tools, Macro, Visual Basic Editor) или нажатием кнопки Редактор Visual Basic (Visual Basic Editor) панели инструментов Visual Basic или комбинацией клавиш < Alt> +< F11>. В результате вы попадаете в интегрированную среду разработки приложений редактора Visual Basic.
Возвратиться из редактора VBA в рабочую книгу можно нажатием кнопки Вид Microsoft Excel (View Microsoft Excel).
Интерфейс VBA состоит из следующих основных компонентов: окна проекта – Project - VBAProject,
окна свойств - Properties, окна редактирования кода, окна форм, меню и панели инструментов.
A) Окно проекта
Окно проекта в редакторе VBA активизируется выбором команды View, Project Explorer. В окне проекта (VBAProject) представлена иерархическая структура файлов форм и модулей текущего проекта.
В проекте автоматически создается модуль для каждого рабочего листа и для всей книги. Кроме того, модули создаются для каждой пользовательской формы, макросов и классов. По своему предназначению модули делятся на два типа: модули объектов и стандартные . К стандартным модулям относятся те, которые содержат макросы. Такие модули добавляются в проект командой Вставка, Модуль (Insert, Module). К модулям объектов относятся модули, связанные с рабочей книгой, рабочими листами, формами, и модули класса.
Окно проекта Project – VBAProject – предназначено для быстрого получения информации о различных составляющих проекта. Под проектом в редакторе VBA понимается набор всех программных модулей, связанных с документами MS Office ( в нашем случае MS Excel). Проект может включать модули с процедурами обработки событий объектов приложения, стандартные модули с пользовательскими процедурами, модули классов и ссылки на другие проекты, позволяющие использовать их процедуры и данные. В окне проекта выводится проект всех открытых рабочих книг. Это позволяет легко копировать формы и коды из одного проекта в другой, что убыстряет процесс создания новых приложений
Б) Окно свойств В окне свойств перечисляются основные установки свойств выбранной формы или элемента управления. Используя это окно, можно просматривать свойства и изменять их установки. Для просмотра свойств выбранного объекта надо выбрать команду Меню-View-Properties Window
Окно свойств состоит из двух составных частей: верхней и рабочей. В верхней части окна свойств располагается раскрывающийся список, из которого можно выбрать любой элемент управления текущей формы или саму форму. Рабочая часть состоит из двух вкладок: По алфавиту (Alphabetic) и По категориям (Categorized), отображающие набор свойств в алфавитном порядке или по категориям. В обоих вкладках свойство Name (имя элемента управления) будет первым. Изменяются значения свойств одним из следующих способов: · Вводом с клавиатуры значения свойства в соответствующее поле. · Значения большинства свойств можно выбрать из раскрывающегося списка. Раскрывающийся список активизируется щелчком в соответствующем поле окна свойств. В) Окно редактирования кода Вызывается это окно одним из следующих способов: · Двойным щелчком на элементе проекта в окне проекта Project · Выбрать значок объекта в окне Project и выполнить команду Меню-View-Code
Окно редактирования кода служит в качестве редактора для ввода и изменения программного кода процедур приложения. В окне редактирования доступны два режима представления кода: просмотр отдельной процедуры и всего модуля. Переключение режимов работы окна редактирования кода осуществляется выбором одной из двух кнопок в нижнем левом углу окна редактирования кода: · Просмотр отдельной процедуры – левая кнопка в левом нижнем углу окна кода, · Просмотр всех процедур модуля – правая кнопка в левом нижнем углу кода.
Два раскрывающихся списка в верхней части окна редактора кода облегчают ориентацию в процедурах. Левый раскрывающийся список позволяет выбрать управляющий элемент или форму, а правый — содержит список событий, допустимых для выбранного в левом списке объекта. Кроме того, выбор объекта и события приводит к созданию в редакторе кода первой и последней инструкции процедуры обработки события, связанного с выбранным объектом.
Г) Окно редактирования форм (UserForm) Для создания диалоговых окон, разрабатываемых приложений в VBA, используются формы. Редактор форм является одним из основных инструментов визуального программирования. Форма в проект добавляется с помощью команды Вставка, Форма (Insert, Form). В результате на экран выводится незаполненная форма с панелью инструментов Панель элементов (Toolbox).
Используя панель инструментов Toolbox из незаполненной формы, можно сконструировать любое требуемое для приложения диалоговое окно. Размещение нового управляющего элемента в форме осуществляется следующей последовательностью действий: 1. Щелкните значок того элемента, который вы собираетесь разместить в форме. 2. Поместите указатель мыши на то место, где будет располагаться управляющий элемент. 3. Нажмите левую кнопку мыши и, не отпуская ее, растяните появившийся прямоугольник до требуемых размеров. 4. Отпустите кнопку мыши. Элемент управления на нужном место создан. Размеры формы и расположенных на ней элементов управления можно изменять. Технология изменения размеров стандартная для Windows: выделить изменяемый элемент, разместить указатель мыши на одном из размерных маркеров и протащить его при нажатой левой кнопки мыши так, чтобы объект принял требуемые размеры. Окно редактирования форм поддерживает операции буфера обмена. Таким образом, можно копировать, вырезать и вставлять элементы управления, расположенные на поверхности формы. Для облегчения размещения и выравнивания элементов управления используется сетка. Активизировать ее можно с помощью вкладки Общие (General) диалогового окна Параметры (Options), вызываемого командой Сервис, Параметры (Tools, Options), там же устанавливается шаг сетки. Кроме того, команды меню Формат (Format) автоматизируют и облегчают процесс выравнивания элементов управления как по их взаимному местоположению, так и по размерам.
Основные понятия VBA Объекты и их семейства Прежде поговорим о проекте в VBA. Под проектом в редакторе VBA понимается набор всех программных модулей, связанных с документом MS Office (под документом MS Office понимаем MS Excel) Классы Важнейшим понятием ООП является класс. Класс обычно описывается, как проект, на основе которого впоследствии будет создан конкретный объект. Таким образом, класс определяет имя объекта, его свойства и действия, выполняемые над объектом. В свою очередь каждый объект, в соответствии с описанным выше, является экземпляром класса.
Иерархия объектов
Полная ссылка на объект состоит из ряда имен вложенных последовательно друг в друга объектов. Разделителями имен объектов в этом ряду являются точки. Ряд начинается с объекта Application и заканчивается именем самого объекта. Например, полная ссылка на ячейку A1 рабочего листа Лист1 рабочей книги с именем Архив имеет вид: Application.Workbooks(" Архив" ).Worksheets(" Лист1" ).Range(" Al" ) Приводить каждый раз полную ссылку на объект совершенно не обязательно. Обычно достаточно ограничиться только неявной ссылкой на объект. В неявной ссылке, в отличие от полной, объекты, которые активны в данный момент, как правило, можно опускать. В рассмотренном случае, если ссылка на ячейку A1 дана в программе, выполняемой в среде Excel, то ссылка на объект Application может быть опущена, т. е. достаточно привести относительную ссылку: Workbooks(" Архив" ).Worksheets(" Лист1" ).Range(" A1" ) Если рабочая книга Архив является активной, то ссылку можно записать еще короче: Worksheets(" Лист1" ).Range(" A1" ) Если и рабочий лист лист! активен, то в относительной ссылке вполне достаточно ограничиться упоминанием только диапазона A1: Range(" A1" )
Методы Объект сам по себе не представляет большого значения. Намного значительнее то, какие действия можно совершать над объектом, и какими свойствами он обладает. Метод как раз и представляет собой действие, выполняемое над объектом. Синтаксис применения метода: Объект.Метод В данном примере при помощи метода Quit (закрыть) закрывается приложение (объект Application). Application.Quit Метод можно применять ко всем объектам семейства. В примере, приведенном ниже к семейству chartobjects (диаграммы) рабочего листа Лист1 применен метод Delete (удалить), который приводит к удалению всех диаграмм с рабочего листаЛист1: Worksheets(" Лист! " ).Chartobjects.Delete
Свойства Свойствопредставляет собой атрибут объекта, определяющий его характеристики, такие как размер, цвет, положение на экране и состояние объекта, например, доступность или видимость. Чтобы изменить характеристики объекта, надо просто изменить значения его свойств. Синтаксис установки значения свойства: Объект.Свойство = ЗначениеСвойства В следующем примере изменяется заголовок окна Excel посредством задания свойства Caption объекту Application: Application.Caption = " Пример" Свойство можно изменять сразу у всех объектов семейства. В приведенном ниже примере с помощью установки свойству visible (видимость) значения False (ложь) все рабочие листы активной книги (семейство объектов worksheets) скрываются: Worksheets.Visible = False
Типы данных
Любая программа работает с данными. Все данные подразделяются на переменные и константы. Переменные Данные Константы Переменные – это данные, которые изменяют свое значение в программе. Константы – это данные, которые свое значение в ходе выполнения программы не изменяют. Все данные определяются каким-то типом данных. Тип данных относится к фундаментальным понятиям любого языка программирования. Идентификаторы
Идентификатор это имя, которое присваивается переменной, константе, процедуре, макросу, модулю, функции или другим элементам программы. Вводимые пользователем имена (идентификаторы) должны отражать суть обозначаемого объекта так, чтобы делать программу легко читаемой. В VBA имеются следующие ограничения на имена: · Длина имени не должна превышать 255 символов. · Имя не может содержать точек, пробелов и следующих символов: %, .&,!, #, @, $. · Имя может содержать любую комбинацию букв, цифр и символов, начинающуюся с буквы. · Имена должны быть уникальны внутри области, в которой они определены. · Не следует использовать имена, совпадающие с ключевыми словами VBA и именами встроенных функций и процедур
Хотя регистр букв (верхний или нижний) в имени не имеет значения, умелое использование его может существенно облегчить понимание содержательной стороны переменной. Например, вместо плоских и невыразительных имен. Т.е. имена не чувствительны к регистру Правильные имена: Отчет Pay_Day Line2 Неправильные имена New Item – содержит пробел 5St – начинается не с буквы Dim – дублирует ключевое слово Wik#Day- содержит недопустимый символ
Переменные Объявление переменной В Visual Basic for Application существует явное и неявное объявление переменной. Явное объявление означает указание имени и типа переменной перед ее использованием. Если тип переменной не указан, или она не объявлена, то считается, что она объявлена неявно. Объявление переменной осуществляется при помощи инструкций Dim, Private, Static, Public, которые имеют следующий синтаксис: Синтаксис объявления переменных Dim имяПеременной [As типДанных] Private имяПеременной [As типДанных] Static имяПеременной [As типДанных] Public имяПеременной [As типДанных]
Например Dim a As Integer Dim d1 As String
Если тип данных при объявлении переменных опущен, то переменная объявлена неявно и по умолчанию получает тип Variant Константы
Константы – это данные, которые не изменяют свое значение во время выполнения программы. Синтаксис объявления констант [Public | Private] Const < Имя константы > [As Тип] = < Выражение > Аргументы:
Пример: Const ПроцентнаяСтавка As Single = 0.2 Const Фирма = " OOO Бескрайние просторы"
Область действия констант определяется, так же как и в случае с переменными. Т.е. константа, объявленная в процедуре, имеет область действия процедурного уровня. Если константа объявлена в области модуля, то область действия данной константы модульного уровня.
Если константа объявлена Const < Имя константы > = < Выражение >, то константа имеет тип, согласующийся с типом выражения. Например: Const b=”Весна” ‘ b типа string
Массивы
Массив представляет собой набор переменных одного типа с одним именем и разными индексами. Каждая такая переменная называется элементом массива. Количество хранящихся в массиве элементов называется размером массива.
Обращение к элементу массива осуществляется указанием имени массива, за которым в круглых скобках указывается индекс массива.
Например, Dim B(l To 2, 1 То 2) As Single B(1, 1)=2 В(1, 2)=4 В(2, 1)=1 В(1, 2)=6 Описание массивов Массив, как любую переменную, надо объявлять используя инструкции: Dim, Static, Privat, Public
a) Объявление статических массивов (базовый индекс) В статическом массиве допускается до 60 размерностей. Статические массивы могут быть объявлены одним из следующих способов: Ø Dim < имя массива> (< количество элементов массива> ) [As < тип элементов> ] Ø Dim < имя массива> (< начальное значение индекса> To < конечное значение индекса> ) [As < тип элементов> ]
Например:
Dim A(11) As Integer – объявлен одномерный массив, состоящий из 12 целых чисел. Причем, по умолчанию первый элемент массива А(0), а последний А(11). В этом случае говорят, что 0 – базовый индекс
Dim B(2, 2) As Single – матрица В(3*3) действительных чисел
Dim S (1 To 7) As Integer – одномерный массив, содержащий семь элементов целого типа.
Dim V As (1 To 5, 1 To 7) As Double – двухмерный массив, у которого 5 строчек и 7 столбцов вещественных элементов.
Можно изменить базовый индекс, написав в области объявления модуля директиву Option Base Например Option Base 1 Dim A(11) As Integer - объявлен одномерный массив, состоящий из 11 целых чисел. Dim B(2, 2) As Single – матрица В(2*2) действительных чисел
Инициализацию элементов массива можно производить по разному: Ø Последовательностью операторов Dim B(l To 2, 1 То 2) As Single B(1, 1)=2 В(1, 2)=4 В(2, 1)=1 В(1, 2)=6 Ø Оператором цикла Dim F (1 To 9, 1 To 11) As Integer Dim i As integer Dim j As integer For i=1 to 9 For j=1 to 11 F(i, j)=i*j Next j Next i
Пример
Public Sub massiv() Dim A(11) As Integer For i = 0 To 11 A(i) = i MsgBox " a(" & i & " )=" & A(i) Next i End Sub
Б) Динамические массивы Иногда в процессе выполнения программы требуется изменить размерность массива. В этом случае его объявляют как динамический массив. Синтаксис объявления динамического массива Ø Dim < имя массива> ( ) [As < тип элементов> ] Затем в программе следует вычислить необходимый размер массива в некоторой переменной и изменить размер динамического массива. С помощью инструкции ReDim ReDim < имя массива> (< размерность массива> ) Допустимо повторное использование инструкции ReDim для изменения числа элементов и размерностей массива Например Dim R() As Single ReDim R(l To 10) ReDim R(5, 10)
10.7 Выражения и операции Вычислительная система выполняет вычислительные и управляющие операции по командам, которые представлены в программе с помощью операторов. Большинство таких операторов строится с использованием выражений, которые в практике программирования играют большую роль, определяя способ и порядок преобразования данных. Массивы Функции
Арифметические Отношения Операции Логические Текстовые В зависимости от операций, использующихся в выражении, последние подразделяются на арифметические, логические и текстовые. А) Арифметические операции: + - сложение; - - вычитание; * - умножение; / - деление; \ - целочисленное деление; Mod – остаток от целочисленного деления; ^ - возведение в степень Например: Dim x As Double, y As Double, z As Double х=5: y=3 Z=x+y Z=x-y Z=x*y Z=x/y Z=x\y ‘ целочисленное деление z=1 Z=x mod y ‘ остаток от целочисленного деления z=2 Z=x^y Б) Операции отношения >, <, > =, < =, < >, = Например: Dim x As Double, y As Double, z As Double, b As Boolean X=5: y=3 B= (x< y) B= (x> y) B= (x< =y) B= (x> =y) B= (x< > y) B= (x=y)
В) Логические операции
Значения элементарных логических выражений приведены в таблице ниже
Таблица – Результат логических операций
Г) Текстовые операции Сложение строк. Для сложения строк допустимо использование операции +, но предпочтительнее, во избежание путаницы, применять операцию со знаком &
Д) Приоритеты операций VBA выполняет операции в соответствии с их приоритетами, что обеспечивает однозначность в трактовании значений выражений Ø Операции в скобках Ø Вычисление функций Ø Возведение в степень Ø Смена знака Ø *, /, \, mod Ø +, - Ø >, > =, <, < =, < >, = Ø Not Ø And Ø Or
\ Встроенные функции VBA В VBA имеется большой набор встроенных функций и процедур, использование которых существенно упрощает программирование. Эти функции можно разделить на следующие основные категории:
Ниже рассмотрены основные функции из этих категорий. Математические функции В VBA имеется большой список математических функций, позволяющих произвести любые вычисления.
Примеры создания последовательности случайных чисел 1. Public Sub случайное_число() Randomize For i = 1 To 3 s = Rnd MsgBox " Случайное число=" & s Next i End Sub
Public Sub qqq() Dim mv, ms As String Randomize ms = " " For i = 0 To 9 mv = Int((6 * Rnd) + 1) ms = ms & " " & mv Next MsgBox ms End Sub Преобразование строки в число и обратно осуществляют следующими функциями.
В качестве допустимого десятичного разделителя функция str воспринимает только точку. При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию cstr, описанную ниже. Функции преобразования типов В VBA имеются следующие функции преобразования типов выражений из данного в указанный.
Функции обработки строк В VBA имеются следующие функции обработки строковых выражений.
Оформление программного кода
Комментарии В программный код можно включит любой произвольный текст, т.е. комментарии. Комментарии, поясняющие текст программы, делают ее более читаемой. Текст, следующий в программе за символом “ ‘ “ вплоть до конца строки, игнорируется компилятором и представляет собой комментарии.
Операторы VBA Оператор – это языковая конструкция, представляющая описание команды или комплекса команд по обработке и преобразованию данных. Оператор присваивания
Оператор присваивания присваивает значение выражения переменной, константе или свойству объекта. Синтаксис оператора присваивания: < идентификатор> =< выражение> Например X=2 Y=”Привет” Стоимость=x*kol TextBox1.Visible=True; CommandButton1.Caption=”Вычислить” Работа: вычисляется значение < выражения> присваивается полученное значение < идентификатору> Пример. Вычислить значение функции f(x, y)=|x|+sin2(y+5).
Организация ввода-вывода данных Ввод и вывод данных в VBA может выполняться несколькими способами: с листа Excel, с помощью диалоговых окон, с помощью пользовательской формы. Для ввода данных с листа или вывода на лист используется объект Worksheets и его методы Range или Cells. Метод Range использует в качестве аргументов одну или две ссылки на ячейки, и возвращают объект Range. Ссылки на ячейки должны быть оформлены в стиле А1 (колонка-буква, строка-число). Ссылка на единичную ячейку, использованная в качестве аргумента, возвращает объект Range для единичной ячейки. Две ссылки на единичные ячейки возвращают объект Range для прямоугольной области, заключенной между этими двумя ячейками:
Public Sub Ввод_Вывод() x = Worksheets(" Лист1" ).Range(" F1" ).Value Worksheets(1).Range(" F2" ).Value = x
x = Worksheets(" Лист1" ).Range(" g1" ) Worksheets(1).Range(" g2" ) = x
Worksheets(" Лист1" ).Range(" A1: B2" ).Value = 1
Worksheets(1).Range(" c1, d6" ) = 5
End Sub
Метод Cells, получая в качестве аргументов два целых числа, возвращают объект, содержащий единичную ячейку. Аргументы определяют номера строки и столбца выбранной ячейки.
Ячейка А2 как объект описывается Range (" A2" ) или cells (1, 2).
В проектах VBA часто встречаются две разновидности диалоговых окон: окна сообщений и окна ввода. Они встроены в VBA, и если их возможностей достаточно, то можно обойтись без проектирования диалоговых окон. Окно сообщений (MsgBox) выводит простейшие сообщения для пользователя, а окно ввода (InpuBox) обеспечивает ввод информации.
Окно ввода Окно вывода Public Sub TestMsgBox1() x = 2 n = MsgBox(" Значение переменной Х=" & x & Chr(10) _ & " Продолжитьвычисления? ", vbYesNo, " Пример окна MsgBox" ) If n = 6 Then MsgBox " Нажата кнопка Да" ElseIf n = 7 Then MsgBox " Нажата кнопка Нет" End If End Sub Пользователь может нажать одну из кнопок – Да или Нет. Если будет нажата кнопка Да, переменной N будет присвоено значение 6, если будет нажата кнопка Нет – 7. Проанализировав в дальнейшем это значение, можно выбрать одну из ветвей выполнения программы. Часто процедура MsgBox используется в «минимальном» варианте - только для вывода сообщения, с одной кнопкой – OK. В этом случае аргументы не берутся в скобки. Например: MsgBox “Значение переменной Х=” & X Пример окна сообщений
ПРИМЕР: 1. Пример использования окон сообщений. В результате действия приведенной ниже процедуры Тестокон появится диалоговое окно пример окна ввода с полем ввода
Следуя приглашению в этом диалоговом окне, введем в поле ввода имя, например Андрей. Нажмем кнопку ОК. На экране отобразится диалоговое окно пример окна сообщения с текстом приветствия Популярное:
|
Последнее изменение этой страницы: 2017-03-11; Просмотров: 792; Нарушение авторского права страницы