- •Оглавление
- •Предисловие
- •Введение
- •Общие сведения о vba
- •Структура редактора vba
- •Запуск редактора vba и завершение работы
- •Пользовательский интерфейс редактора vba
- •Окно Project Explorer (Проекта)
- •Окно свойств (Properties)
- •Окно для редактирования кода
- •Окно редактирования форм (UserForm)
- •Программирование на vba
- •Использование модулей и процедур
- •Запуск пользовательских функций
- •Создание новой процедуры
- •Выбор имени
- •Удаление модуля из проекта
- •Представление данных в vba
- •Операции языка vba
- •Инструкции
- •Инструкции объявления (описания)
- •Инструкции присваивания (назначения или присвоения)
- •Выполняемые инструкции (исполняемые инструкции)
- •Инструкции по управлению потоком
- •Объекты в vba
- •Работа с диапазонами
- •Использование свойства Range
- •Использование свойства Cells
- •Работа со свойствами – атрибутами объектов
- •Работа с методами объектов
- •Взаимодействие с пользователем
- •Вывод сообщений с помощью функции MsgBox
- •Вывод сообщений с помощью оператора MsgBox
- •Ввод данных пользователем с помощью окон ввода
- •Использование комментариев в программах vba
- •Создание пользовательских форм в редакторе vba
- •Создание формы
- •Использование элементов управления
- •Свойства элементов управления
- •Методы и события элементов управления
- •Макросы
- •Сервис►Макрос►Макросы…
- •Вопросы для самоконтроля
- •Примеры решения задач в среде программирования vba
- •Разработка программ и алгоритмов линейной структуры
- •С использованием процедуры функции в редакторе Visual Basic;
- •С использованием рабочего листа ms Excel;
- •С использованием форм пользователя в редакторе Visual Basic. Задание 1
- •Создание процедуры функции в редакторе Visual Basic Ход выполнения задания:
- •Создание процедуры подпрограммы с использованием ввода исходных данных и вывода результатов на рабочий лист ms Excel Ход выполнения задания:
- •Создание формы пользователя в редакторе Visual Basic Ход выполнения задания:
- •Разработка программ и алгоритмов разветвляющейся структуры
- •С использованием рабочего листа ms Excel;
- •С использованием форм пользователя в редакторе Visual Basic. Задание 2
- •Создание процедуры подпрограммы с использованием ввода исходных данных и вывода результатов на рабочий лист ms Excel Ход выполнения задания 2:
- •Создание формы пользователя в редакторе Visual Basic Ход выполнения задания:
- •Назначить автофигуре с надписью Задача2 макрос Zadanie2, выбрав пункт контекстного меню Назначить макрос...
- •Разработка программ и алгоритмов циклической структуры
- •С использованием процедуры функции в редакторе Visual Basic;
- •С использованием встроенных диалоговых окон (окна ввода, окна сообщения) в процедуре подпрограммы. Задание 3
- •Создание процедуры функции в редакторе Visual Basic
- •Использование окон сообщений и окон ввода
- •Разработка программ и алгоритмов с использованием массивов Задание 4
- •Ход выполнения задания 4:
- •Заключение
- •Библиографический список
- •Интернет ресурсы
- •Предметный указатель
Объекты в vba
Программирование на VBA связано с объектами, их свойствами и методами. Все приложения MS Office с объектной точки зрения построены одинаково. Всегда существует задающий приложение корневой объект Applications (т.е. приложение Word или Excel и т.д.), в который «вложены» все остальные объекты данного приложения.
Если в объект Applications вложен объект Х, то говорят, что у объекта Applications есть свойство Х (свойство – участник, само являющееся объектом), и запись Applications. Х означает обращение к объекту Х. В объект Х могут быть вложены другие объекты, в них – следующие и т.д. Таким образом, система объектов может быть представлена в виде некоторой иерархической структуры. Однако это описание системы объектов несколько упрощено. Для отображения полной картины требуется ввести понятие коллекции. Коллекция – это набор однотипных объектов. Рассмотрим для примера систему объектов, присущих приложению MS Excel.
Объект Applications, представляющий приложение Excel, имеет свойство – участник (т.е. вложенный объект) Workbooks, возвращающее объект Workbooks – коллекцию всех открытых рабочих книг. Каждый элемент коллекции – рабочая книга – является объектом Workbook.
Объект Workbook, представляющий одну рабочую книгу, имеет свойство Sheets. При обращении к этому свойству (участнику) мы получаем доступ к объекту Sheets – коллекции листов данной книги. Каждый элемент этой коллекции – лист – имеет свой тип и потому является объектом Worksheet (рабочий лист) или Chart (диаграмма).
Объект Worksheet, представляющий один рабочий лист, имеет свойство Cells (ячейки), дающее доступ к объекту Range (диапазон). Используя этот объект, можно задавать как все ячейки рабочего листа – всю таблицу, так и любую ее часть.
Способы обращения к одному и тому же объекту. Пусть есть рабочая книга Программирование на VBA.xls, причем открыта только она и в ней содержится всего один рабочий лист “Задача 1”. Тогда к этому листу можно обратиться несколькими способами:
Workbooks(“Программирование на VBA.xls”). Worksheets(“Задача 1”)
Workbooks(1). Worksheets(1)
Workbooks(1). Sheets(1)
Applications. ActiveWorkbook. ActiveSheet
ActiveWorkbook. ActiveSheet
ActiveSheet
Какой из способов обращения применять – зависит от конкретной ситуации. Если одновременно открыто несколько рабочих книг, то второй и третий метод будут ненадежными. В то же время, если нужно работать с активным листом (в какой бы книге он ни содержался), подойдет любой из последних трех методов. Если нужно обратиться к конкретному листу определенной рабочей книги, следует использовать первый метод.
Обращение к конкретному объекту – диапазону, представляющему в данном случае одну ячейку:
Applications. ActiveWorkbook. ActiveSheet. Range(“A1”) = “Таблица 1”.
В этом случае в ячейку с именем “A1”, находящуюся на активном листе активной рабочей книги приложения MS Excel записан текст “Таблица 1”. Объект Range находится на третьем уровне вложенности. Иногда можно опускать имена объектов старших уровней иерархии. Так, в ряде случаев, когда речь идет о конкретном активном рабочем листе активной книги, достаточно ограничиться указанием диапазона: Range(“A1”) = “Таблица 1”.
