VBA относится к языкам объектно-ориентированного программирования (ООП).
Объектная библиотека VBA содержит более 100 различных объектов, находящихся на разных уровнях иерархии. Иерархия определяет связь между объектами и показывает пути доступа к ним. Указать объект можно используя полную или неявную ссылки.
Полная ссылка на объект состоит из ряда имен вложенных последовательно друг в друга объектов. Разделителями имен объектов в этом ряду являются точки, ряд начинается с объекта Application и заканчивается именем самого объекта.
Пример. Полная ссылка на ячейку А1 рабочего листа Лист1 рабочей книги с именем Кафедра имеет вид:
Application.Workbooks("Кафедра").Worksheets("Лист1").Range("A1")
В неявной ссылке, в отличие от полной, объекты, которые активны в данный момент, как правило, можно опускать.
В рассмотренном случае, если ссылка на ячейку А1 дана в программе, выполняемой в среде Excel, то ссылка на объект Application может быть опущена, т. е. достаточно привести относительную ссылку:
Workbooks("Кафедра").Worksheets("Лист1").Range("A1")
Если рабочая книга Кафедра является активной, то ссылку можно записать еще короче:
Worksheets("Лист1").Range("A1")
Если и рабочий лист Лист1 активен, то в относительной. ссылке вполне достаточно ограничиться упоминанием только диапазона А1:
Range("A1")
Методы
Синтаксис применения метода:
Объект.Метод
Пример. При помощи метода Quit (Закрыть) закрывается приложение (объект Application ):
Application.Quit
Свойства
Свойство представляет собой атрибут объекта, определяющий его характеристики, такие, как размер, цвет, положение на экране и состояние объекта, например доступность или видимость.
Чтобы изменить характеристики объекта, надо просто изменить значения его свойств.
Синтаксис установки значения свойства:
Объект.Свойство = ЗначениеСвойства
В следующем примере изменяется заголовок окна Excel посредством задания свойства Caption объекту Application :
Application.Caption = "База данных"
Свойство можно изменять сразу у всех объектов семейства. Например, с помощью установки свойству Visible (Видимость) значения False (Ложь) все рабочие листы активной книги (семейство объектов Worksheets) скрываются:
Worksheets.Visible = False
События
Событие представляет собой действие, распознаваемое объектом (например, щелчок мышью или нажатие клавиши), для которого можно запрограммировать отклик.
События возникают в результате действий пользователя или программы, или же они могут быть вызваны системой.
Суть программирования на VBA как раз и заключается в этих двух понятиях: событие и отклик на него. Если пользователь производит какое-то воздействие на систему, например нажимает кнопку, тогда в качестве отклика выполняется код созданной пользователем процедуры. Если такой отклик не создан, т. е. не написана соответствующая процедура, то система никак не реагирует на данное событие и оно остается безответным. Таким образом, действия, происходящие в системе, являются событиями, а отклики на них - процедурами. Этот специальный вид процедур, генерирующих отклик на события, называется процедурами обработки событий. В целом программирование на VBA состоит в создании кода программ, которые генерируют прямо или косвенно отклики на события.
Структура редактора VBA
Редактор VBA предназначен для создания и редактирования макросов.
Редактор VBA активизируется командой Сервис – Макрос - Редактор Visual Basic или нажатием кнопки Редактор Visual Basic панели инструментов Visual Basic . Возвратиться из редактора VBA в документ можно нажатием кнопки Вид Microsoft Word ( Excel ) или нажатием соответствующей кнопки на панели задач.
Интерфейс VBA
Интерфейс VBA состоит из следующих основных компонентов:
· окно проекта,
· окно свойств,
· окно редактирования кода,
· окно форм,
· меню
· панели инструментов.
Окно проекта
Окно проекта в редакторе VBA активизируется выбором команды Вид/Окно проекта или нажатием кнопки Окно проекта.
В окне проекта представлена иерархическая структура файлов форм и модулей текущего проекта.
В проекте автоматически создается модуль для каждого рабочего листа и для всей книги. Кроме того, модули создаются для каждой пользовательской формы, макросов и классов.
По своему назначению модули делятся на два типа:
· модули объектов. К ним относятся модули, связанные с рабочей книгой, рабочими листами, формами и модули класса.
· стандартные модули. К ним относятся модули, содержащие макросы. Такие модули добавляются в проект командой Вставка/Модуль
По мере создания, добавления и удаления файлов из проекта эти изменения отображаются в окне проекта.
Удаление файла из окна проекта производится выбором значка файла с последующим выполнением команды Файл/Удалить.
Окно редактирования кода
Окно редактирования кода служит в качестве редактора для ввода и изменения кода процедур приложения. Код внутри модуля организован в виде отдельных разделов для каждого объекта, программируемого в модуле.
В окне редактирования доступны два режима представления кода: просмотр отдельной процедуры и всего модуля.
Переключение режимов работы окна редактирования кода осуществляется выбором одной из двух кнопок в нижнем левом углу окна редактирования кода либо установкой либо снятием флажка Просмотр всего модуля (Сервис – Параметры - вкладка Редактор - флажок Просмотр всего модуля).
Два раскрывающихся списка в верхней части окна редактора кода облегчают ориентацию в процедурах. Левый раскрывающийся список позволяет выбрать управляющий элемент или форму, а правый - содержит список событий, допустимых для выбранного в левом списке объекта. При выборе элемента управления в форме посредством двойного щелчка или при перемещении указателя на элемент управления и нажатии кнопки Программа открывается окно редактирования кода как раз в том месте, где располагается процедура, связанная с этим элементом управления. Обратный переход от процедуры к объекту управления быстрее всего осуществить нажатием кнопки Объект.
Интеллектуальные возможности редактора кода
Написание программ значительно облегчается за счет следующих интеллектуальных возможностей редактора кода.
· Способность автоматически завершать написание операторов, свойств и параметров
При написании кода редактор сам предлагает пользователю список компонентов, логически завершающих вводимую пользователем инструкцию. Автоматическое отображение списка компонентов происходит только при установленном флажке Список компонентов (Сервис – Параметры – вкладка Редактор – флажок Список параметров). Или нажатием комбинации клавиш Ctrl+J.
Пример, при наборе кода
Range("A1").
после ввода точки на экране отобразится список компонентов, которые логически завершают данную инструкцию. Двойной щелчок на выбранном элементе из этого списка или нажатие клавиши Tab вставляет выбранное имя в код программы.
· Способность автоматического отображения на экране сведений о процедурах, функциях, свойствах и методах после набора их имени. Автоматическое отображение на экране сведений о процедурах, функциях, свойствах и методах после ввода их имени происходит только при установленном флажке Краткие сведения (Сервис –Параметры - вкладка Редактор - флажок Краткие сведения) или нажатием комбинации клавиш Ctrl+I.
· Способность автоматической проверки синтаксиса набранной строки кода сразу после нажатия клавиши Enter. Если после набора строки и нажатия клавиши Enter строка выделяется красным цветом, то это указывает на наличие синтаксической ошибки в набранной строке. Эту ошибку необходимо найти и исправить. Кроме того, если установлен флажок Проверка синтаксиса (Сервис - Параметры - вкладка Редактор - флажок Проверка синтаксиса) кроме выделения красным цветом фрагмента кода с синтаксической ошибкой на экране отображается диалоговое окно, поясняющее, какая возможная ошибка произошла.
· Контекстная справка. Если курсор расположить на ключевом слове языка VBA, имени процедуры, функции, свойства или метода и нажать клавишу F1, то на экране появится окно со справочной информацией об этой функции.
Окно редактирования форм UserForm
Для создания диалоговых окон разрабатываемых приложений в VBA используются формы. Редактор форм является одним из основных инструментов визуального программирования.
Форма в проект добавляется с помощью команды Вставка/Форма или нажатием кнопки Вставить UserForm . В результате на экран выводится незаполненная форма с Панелью элементов.
Используя Панель элементов из незаполненной формы, можно сконструировать любое требуемое для приложения диалоговое окно.
Для размещения нового управляющего элемента в форме необходимо:
1. Выбрать на Панели элементнов необходимый управляющий элемент
2. Поместить указатель мыши на то место, где будет располагаться управляющий элемент.
3. Нажать левую кнопку мыши и, не отпуская ее, растянуть появившийся прямоугольник до требуемых размеров.
4. Отпустить кнопку мыши. Элемент управления на нужном месте создан.
Размеры формы и расположенных на ней элементов управления можно изменять.
Можно копировать, вырезать и вставлять элементы управления, расположенные на поверхности формы.
Для облегчения размещения и выравнивания элементов управления используется сетка (Сервис - Параметры вкладка Общие). Кроме того, команды меню Формат автоматизируют и облегчают процесс выравнивания элементов управления как по их взаимному местоположению, так и по размерам.
Окно свойств
В окне свойств перечисляются основные установки свойств выбранной формы или элемента управления. Используя это окно, можно просматривать свойства и изменять их установки. Для просмотра свойств выбранного объекта надо либо щелкнуть кнопку Окно свойств, либо выбрать команду Вид - Окно свойств.
Окно свойств состоит из двух частей: верхней и рабочей. В верхней части окна свойств располагается раскрывающийся список, из которого можно выбрать любой элемент управления текущей формы или саму форму. Рабочая часть состоит из двух вкладок: По алфавиту и По категориям, отображающих набор свойств в алфавитном порядке или по категориям. В обеих вкладках свойство Name (имя элемента управления) будет первым. Изменяются значения свойств одним из следующих способов:
• вводом с клавиатуры значения свойства в соответствующее поле;
• выбором значения из раскрывающегося списка .
Окно просмотра объектов Object Browser
Окно Просмотр объектов ( Object Browser ) вызывается командой Вид - Просмотр объектов или нажатием кнопки Просмотр объектов. В этом окне приведен список всех объектов, которые имеются в системе и которые можно использовать при создании проекта.
Окно Просмотр объектов состоит из трех основных частей:
1.Раскрывающегося списка Проект - Библиотека в левом верхнем углу окна. В этом раскрывающемся списке можно выбрать различные проекты и библиотеки объектов. Выбор в списке строки <Все библиотеки> отображает список объектов всех библиотек.
2. Списка Классы. После выбора из раскрывающегося списка Проект - Библиотека просматриваемой библиотеки, все классы объектов выбранной библиотеки выводятся в списке Классы.
3. Списка Компоненты. После выбора класса из списка Классы просматриваемой библиотеки, все компоненты выбранного класса выводятся в списке Компоненты. При выделении строки в этом списке в нижней части окна Просмотр объектов приводится дополнительная информация о выбранном компоненте. Кроме того, если нажать на кнопку Справка расположенную, на панели инструментов в правой верхней части окна Просмотр объектов, то на экране отобразится окно Справочник Visual Basic с подробной информацией о выделенном компоненте.
Общие сведения об организации программ в VBA.
Программа VBA состоит из одного или нескольких модулей.
Модуль - это лист с текстом программы, вставленный в документ.
Текст программы VBA начинается с опций, которые управляют описанием переменных, способом сравнения строк и т.д.
Объявление глобальных переменных или констант для данного модуля, т. е. таких переменных, которые используются во всех процедурах модуля.
Текст функций пользователя и процедур, составляющих саму программу. При написании программ удобно внутрь текста помещать комментарии.
Комментарии - это пояснительный текст, который можно записать в любом месте программы. Каждая строка комментариев начинается со знака апострофа. Комментарии игнорируются компилятором, и поэтому никакого влияния на программу не оказывают. Комментарии удобно использовать также при отладке операторов для их временного отключения.
Для более компактной записи программы используется символ двоеточия в качестве разделителя операторов в одной строке.
Переменные и константы
Именем переменной –может быть последовательность латинских букв и цифр и символа подчеркивания, начинающаяся с буквы.
Пробелы недопустимы, поэтому они заменяются символом подчеркивания. Также внутри идентификаторов недопустимы спецсимволы: @, #, $, &, %, !.
Для упрощения чтения и понимания значения имен переменных на практике рекомендуется при написании сложных имен использовать строчные и прописные буквы, а также символ подчеркивания. Например, вместо myage (мой возраст) лучше написать MyAge или My _ Age .
Все переменные в VBA имеют тип.
Тип переменной указывает, что может хранить переменная: целое или вещественное число, строку, дату и т. д.
Базовые типы переменных VBA приведены в таблице.
Тип переменной | Занимаемый размер памяти, байт | Диапазон |
Boolean (логический) | 2 | True (истина) или False (ложь) |
Integer (целое) | 2 | От -32 768 до 32 768 |
Long (длинное целое) | 4 | От -2 147 483 648 до 2 147 483 647 |
Single (число с плавающей точкой) | 4 | По абс. величине от 1,401298Е-45 до 3,402823Е38 |
Date (дата) | 8 | От 1 января 100 г. до 3 1 декабря 9999 г. |
Array (массив) | Зависит от размера массива и типа элементов | |
Double (число с плавающей точкой двойной точности) | 8 | По абсолютной величине от 4,94065645841247Е-324 до 1,797693 13486232Е308 |
Object (объект) | 4 | Любой определенный объект |
String (строка переменной длины) | 10 | От 0 до 2х109+ длина строки |
Currency (денежный) | 8 | От -922 337 203 685 477,5808 до 922 337 203 685 477,5807 |
Variant (вариант) | Зависит от содержимого переменной |
Если не указан тип переменной, то по умолчанию используется тип Variant . Переменные этого типа могут содержать данные любого типа, кроме типов, определенных пользователем, и строк фиксированной длины. Тип такой переменной изменяется в зависимости от последнего присвоения. Поэтому тип Variant очень удобен. Однако указание конкретного типа позволяет делать функции более быстрыми и надежными.
Описание переменной.
Переменную в VBA можно описать с помощью следующей конструкции:
Dim ИМЯ_ПЕРЕМЕННОЙ As ТИП_ПЕРЕМЕННОЙ
Например, возможны следующие описания переменных:
Dim A As Integer
Dim В, С, D As Integer, E As Single
Описанные таким образом переменные имеют следующие типы: переменные А и D являются переменными целого типа ( Integer ), переменная Е является действительной переменной одинарной точности ( Single ), переменные В и С описаны неявно и имеют тип Variant .
Однако более удобно использовать явное описание типов переменных, чтобы в ходе разработки кода программы не возникал вопрос о применимости к данной переменной той или иной функции или операции.
Если все же приходится использовать переменную типа Variant , то перед тем, как применить к переменной или выражению, содержащему эту переменную, некоторую функцию или операцию, необходимо определить подтип данных переменной типа Variant .
Существуют специальные логические функции для определения подтипа данных:
• IsNumeric (выражение) - определяет, является ли результат вычисления выражения числом;
• IsArray (выражение) - определяет, является ли результат вычисления выражения массивом;
• IsDate (выражение) - определяет, является ли результат вычисления выражения датой;
• IsObject(выражение) - определяет, является ли результат вычисления выражения объектом и т. д.
По умолчанию строковая или текстовая переменная ( String ) является массивом переменной длины, который содержит символы. Однако текстовая переменная может быть определена и фиксированной длины. В следующем примере объявляется символьный массив размером в 20 символов:
Dim Str As String*20
В этом случае, если вы присвоите переменной Str строку длиной более 20 символов, то она будет усечена.
Описание собственных типов данных.
Ключевое слово Туре позволяет описать собственные типы данных, созданные на основе стандартных.
Тип переменной в VBA можно описать с помощью следующей конструкции:
[Private/Public] Type ИМЯ_ТИПА
ИМЯ_ЭЛЕМЕНТА ( [ИНДЕКСЫ])] As ТИП
ИМЯ_ЭЛЕМЕНТА ( [ИНДЕКСЫ])] As ТИП
End Type
Например, информация о некотором служащем может быть представлена так:
Type Worker
FirstName As String*20 ‘фамилия
LastName As String*20 ‘имя
Birthday As Date ‘дата рождения
Phone As String*7 ‘телефон
Salary As Single ‘зарплата
End Type
Dim New_Worker As Worker
Как и в других языках программирования, в VBA можно использовать массивы.
Примеры объявления массивов:
Dim A(19) As Integer
Dim В(5, 5) As Single
Первая строка объявляет одномерный массив (вектор), состоящий из 20 целых чисел, причем по умолчанию первый элемент массива будет А(0), а последний - А(19).
Вторая строка объявляет двумерный массив 6x6 (матрицу), состоящий из действительных чисел. При этом говорят, что 0 - базовый индекс. Можно изменить базовый индекс, написав в начале листа модуля оператор Option Base 1. После этого индексы массивов А и В будут начинаться с единицы. Другим способом изменения базового индекса является использование ключевого слова То при объявлении массива, например
Dim B(1 То 6, 1 То 6) As Single
Dim A(1 To 20) As Integer
Массив в программе определяется поэлементно, например
Dim My_Array(1 To 2, 1 То 2) As Single
My_Array(1, 1)=2
My_Array(1, 2)=4
My_Array(2, 1)=1
My_Array(1, 2)=6
Удобным способом определения одномерных массивов является функция Array , преобразующая список элементов, разделенных запятыми, в вектор из этих значений и присваивающая ему тип Variant , например
Dim A1 As Variant
A1 = Array(15,25,35)
B1 = A1(2)
Иногда в процессе выполнения программы требуется изменить размер массива. В этом случае его объявляют как динамический. Для этого при объявлении массива не нужно указывать размерность, например
Dim R_dinam() As Single
Затем в программе следует вычислить необходимый размер массива, присвоив его некоторой переменной, например n, и указать размер динамического массива с помощью оператора ReDim .
ReDim R_dinam(n, n)
Оператор присваивания
Оператор присваивания обозначается знаком равенства =
Оператором присваивания предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, идентификатор которой расположен в левой части.
Например, в результате действия следующей пары операторов:
х=2
х=х+2
переменной х будет присвоено значение 4.
Описание констант
Часто при написании программ необходимо использовать одни и те же постоянные значения: числа, строки, даты и т. д. В этом случае вместо них лучше использовать имена, которые обозначают эти значения. В VBA можно задать постоянную (константу) с помощью одной из следующих конструкций:
Const ИМЯ_ПОСТОЯННОЙ = ВЫРАЖЕНИЕ
Const ИМЯ_ПОСТОЯННОЙ As ТИП_ПОСТОЯННОЙ = ВЫРАЖЕНИЕ
Примеры возможного определения констант.
Const FileName = "Main_Book.xls"
Const PI As Double = 3.14159
Const MyAge As Single =21.5
Создание функции пользователя в Excel
Общий вид функции пользователя:
Public function ИМЯ_ФУНКЦИИ(СПИСОК_ПАРАМЕТРОВ)
ТЕЛО_ФУНКЦИИ
End Function
ТЕЛО_ФУНКЦИИ состоит из описательной части и блока операторов, выполняющихся один за другим. Если необходимо прекратить выполнение функции в некотором конкретном месте, это можно сделать с помощью оператора Exit Function .
При определении функции иногда бывает удобно описать типы параметров и вычисляемого значения функции.
Имя функции задается пользователем по тем же правилам, что и имена переменных.
Возвращаемое функцией пользователя значение присваивается имени функции. Поэтому в теле функции пользователя, должен присутствовать по крайней мере один оператор, присваивающий имени функции значение какого-либо выражения.
Ввод и вывод информации в окне сообщений
Вывод сообщений осуществляется функцией MsgBox, которая имеет следующий вид
MsgBox (“сообщение”, кнопки, заголовок, файл-справки, описание) as VbMsgBoxResult
Сообщение – обязательный аргумент – текст в кавычках, который будет выведен в окне. Может состоять из нескольких строк, объединенных &; использование Chr(13) приводит к переходу на новую строку
Кнопки – значения этого аргумента определяют те кнопки, которые появятся в окне. Если аргумент не указан, то выводится только кнопка Ok. Возможные значения аргумента указаны в таблице.
Кнопки | Аргумент |
Ok | VbOkOnly |
Ok Отмена | VbOkCancel |
Да Нет | VbYesNo |
Да, Нет, Отмена | VbYesNoCancel |
Прекратить, Повторить, Игнорировать | VbAbortRetryIgnore |
Повторить, Отмена | VbRetryCancel |
Информационный знак | VbInfirmation |
Знак вопроса | VbQuestion |
Знак «Критическое сообщение» | VbCritical |
Знак восклицания | VbExclamation |
Заголовок – задает заголовок окна.
Функция MsgBox возвращает одно из значений, приведенных в таблице, поэтому должна использоваться в правой части оператора присваивания.
Например.
y = MsgBox("все в порядке", vbOKOnly)
Таблица значений, возвращаемых функцией MsgBox
Описание | Константа |
Ok | VbOk |
Отмена | VbCancel |
Прервать | VbAbort |
Повторить | VbRetry |
Пропустить | Vblgnore |
Да | VbYes |
Нет | VbNo |
Ввод данных с помощью окна ввода осуществляется функцией InputBox, которая имеет вид:
InputBox (“сообщение”, заголовок, значение_по_умолчанию, X, Y, файл-справки, описание) as String
Сообщение – текст, который выводится в окне
Значение_по_умолчанию – символ, который выводится в поле ввода, например «пробел».
X, Y – координаты верхнего левого угла окна.
Пример.
n = InputBox("введите аргумент", "запрос", " ")
y = new_f(n)
MsgBox (y)
Литература
Информатика: Учеб. пособие для студ. пед. вузов/ А.В.Могилёв, Н. И. Пак, Е. К. Хеннер; Под ред. Е. К. Хеннера. — М.: 1999. — 816 с.
Информатика: Учебник, задачник-практикум (два тома), методические рекомендации для учителя/ Под ред. И. Г. Семакина, Е. К. Хеннера— М.: Лаборатория Базовых Знаний, 1999 г.
Попов В. Б. Основы компьютерных технологий — М.: Финансы и статистика, 2002. — 704 с.
Основы современных компьютерных технологий, под ред. А. Д. Хомоненко, СПб., КОРОНА принт, 1998.
Бозенко А. Е. IBM PC: устройство, ремонт, модернизация. — 2-е изд., перераб. и доп. — М.: ТОО фирма «КомпьютерПресс», 1996. — 344 с.
Олифер В. Г., Олифер Н. А. Сетевые операционные системы — СПб.: Питер, 2001. — 544с.
Гордеев А. В., Молчанов А. Ю. Системное программное обеспечение. — СПб.: Питер,
2001. —736с.
И. Ефимова О., Морозов, Угринович «Практикум по компьютерной технологии»,
Москва, ABF, 1999.
Информатика. Базовый курс/ Симонович С. В. и др.— СПб.: Изд-во "Питер", 1999.— 640с.
Фигурнов В. Э. IBM PC для пользователя. Изд. 7-е, исправл. и доп.
Ахметов К. С. Windows 95 не для всех. — 2-е изд., перераб. и доп. — М.: КомпьютерПресс, 1997. — 288 с.
Джордейн Р. Справочник программиста персональных компьютеров типа IBM PC, XT и AT/ Пер с англ.— М.: Финансы и статистика, 1991.— 544с.
Брябрин В. М. Программное обеспечение персональных ЭВМ. — М.: Наука, 1989г.
Информатика в понятиях и терминах: Кн. для учащихся ст. классов сред, шк./ Г. А. Бордовский, В. А. Извозчиков, Ю. В. Исаев, В. В. Морозов; Под ред. В. А. Извозчикова. — М.: Просвещение, 1991. — 208 с.
Microsoft MS-DOS. User's Guide and Reference.
Франкен Г., Молявко С.М. MS-DOS 6.2 для пользователя: – Киев, BHV, 1994. – 448 с.
Андреев А.Г. и др. Microsoft Windows 2000 Server. Русская версия – СПб.: БХВ-Петербург, 2003. – 960 с.
Очков В. Ф. Mathcad 8 Pro для студентов и инженеров. — М.: КомпьютерПресс, 1999. —523с.
Плис А. И., Сливина Л. A. Mathcad 2000. математический практикум для экономистов и инженеров: Учеб. Пособие. — М.: Финансы и статистика, 2000. — 656 с.
Дьяконов В.П. Компьютерная математика. Теория и практика – М.:Нолидж, 1999 – 1296 с.
Рыжиков Ю.И. Решение научно-технических задач на персональном компьютере. – СПб.: КОРОНА принт, 2000. – 272 с.
Биллинг В.Г. Средства разработки VBA-программиста. Офисное программирование. Том 1, 2 – М. «Русская Редакция», 2001. – 480 с.
Газета «Информатика», приложение к газете «Первое сентября».
Журнал CHIP special, 2003-2005 гг.
Журнал UPGRADE special, 2004-2005 г.
* В стандартной установке отсутствует.
* данный компонент отсутствовал в Windows 9X.
* данный компонент отсутствовал в Windows 9X.
Дата: 2019-05-28, просмотров: 238.