Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы программирования на VBA для Microsoft Excel. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
783 Кб
Скачать

Билиотека Excel задает основу документа Excel. Библиотека Office содержит объекты, общие для всех приложений. Библиотека VBA содержит встроенные в язык стандартные функции, константы, классы.

В объектной модели Excel объект Workbook находится на втором уровне и используется для получения ссылки на нужную книгу в наборе открытых книг Excel, а также для настройки общих свойств и выполнения общих действий со всеми листами книги.

Получить этот объект можно тремя способами:

1)используя коллекцию Workbooks объекта Application, которая постоянно доступна в Excel или может быть получена через свойство Workbooks, возвращающее эту коллекцию. Примеры обращений: Workbooks(1) или Workbooks("Книга1");

2)через свойство ActiveWorkbook объекта Application, например: Application.ActiveWorkbook – обращение к активной рабочей книге;

3)через свойство ThisWorkbook (эта рабочая книга) объекта

Application, например: Application.ThisWorkbook – обращение к книге,

которой принадлежит данный программный модуль.

Использование свойства ThisWorkbook объекта Application особенно актуально в тех ситуациях, когда выполняемый код и данные, которые он обрабатывает, расположены в разных книгах. В этом случае для обращения к книге, содержащей выполняемый код, используется свой-

ство ThisWorkbook.

Объект Worksheet (Рабочий лист)

Рассмотренный ранее объект Workbook (Рабочая книга) содержит в своем составе коллекцию объектов Sheets (Листы). Листы могут быть объектами двух типов: Worksheet (Рабочий лист) или Chart (Диаграмма).

Рабочие листы образуют коллекцию Worksheets, диаграммы – коллекцию Charts. Коллекция Worksheets состоит из всех рабочих листов конкретной рабочей книги, а коллекция Charts – из всех листовдиаграмм.

Отдельный рабочий лист (объект Worksheet) может включать в себя такие объекты, как Range (Диапазон), PivotTable (Сводная таблица), Shape (Форма). Рабочий лист содержит в своем составе также скрытый графический слой, на который можно помещать рисунки, элементы управления, встроенные объекты, диаграммы и другие графические объекты.

21

Для обеспечения ввода данных в Excel прежде всего нужно определить лист, на который они будут вводиться. Это можно сделать либо выбором конкретного листа Excel, либо созданием нового листа и его выбором.

Просто выбрать определенный лист активной книги Excel можно так:

Лист2.Select

Создать новый лист можно путем вызова метода Add() объекта Worksheets. Например, создать новый лист и присвоить ему имя можно так:

Dim L As Worksheet

Set L = Worksheets.Add()

L.Name = "Лист4"

При работе с рабочими листами может возникнуть необходимость в определении объекта – родителя рабочего листа. Подобная необходимость появляется и при работе с другими объектами модели Excel.

Определить имя объекта-родителя можно, используя свойство Parent (Родитель), например:

TextBox1 = Лист2.Parent.Name

Управление рабочими листами включает такие операции, как скрытие и отображение – как самих рабочих листов, так и столбцов и строк на них.

Существует также возможность изменения ориентации текста в ячейках, переноса по словам, расположения текста в несколько строк в пределах ячейки.

Объект Range (Диапазон)

Объект Range представляет собой выделенную часть листа Excel, объявленную с типом Range. Это может быть просто ячейка, выделенный набор ячеек, строка или столбец.

Особенность этого объекта заключается в том, что его можно рассматривать и как одиночный объект, и как коллекцию однотипных объектов. В качестве коллекции этот объект обладает методом Item и свойством Count. Вместе с тем ряд свойств этого объекта не характерен для коллекций.

22

Существует множество способов получения объекта Range, однако наиболее распространены три из них.

Первый и самый простой способ – через свойство Range, которое имеется у объектов Application, Worksheet и Range. Например:

Dim R as Range

Set R=Worksheets("Лист1").Range("A1")

При использовании объекта Range и его свойства Range создается виртуальный лист со своей собственной нумерацией. Тогда в примере:

Dim R1 as Range

Dim R2 as Range

Set R1=Worksheets("Лист1").Range("C1") Set R2=R1. Range("B1")

R2.Value=5

значение 5 будет занесено в ячейку B1 относительно начала виртуального листа, начинающегося с ячейки C1, т. е. в ячейку D1 листа

Excel.

Второй способ получения объекта Range предусматривает использование свойства Cells объекта Worksheet. Например:

Dim R as Range

Set R=Worksheets("Лист1").Cells(1, 4)

В этом случае возвращается диапазон, состоящий только из одной ячейки. Для получения диапазона, состоящего из нескольких ячеек, свойства Range и Cells применяют вместе. Например:

Dim R as Range

Set R= Range (Cells(1, 1), Cells(5, 3))

Третий способ получения объекта Range предусматривает использование дополнительных свойств объекта Range, с помощью которых можно создать новый диапазон или изменить текущий.

Ячейка, строка или столбец не являются объектами, вместо них используется объект Range. В объектной модели Excel есть свойства Column, Columns, Row и Rows.

Свойства Columns и Rows возвращают наборы объектов Range, представляющие собой соответственно столбцы и строки. Их можно

23

использовать вместе с объектами Range, ActiveSheet, Worksheets, Application. Например:

MsgBox Range("A1:D3").Columns.Count MsgBox ActiveSheet.Columns.Count MsgBox Worksheets(1).Columns.Count MsgBox Application.Columns.Count

Для того чтобы выделенный набор ячеек рассматривался как объект Range, необходимо явно указать тип Range, например:

Dim s As Range

или

Dim st As Range

Dim t As Range

 

Set st = Range("A1:C2")

Set s = Range("A1:C2")

 

MsgBox st.Count

For Each t In s

 

MsgBox st(3).Value

Debug.Print t.Value

 

 

Next

Определить число строк и столбцов, входящих в объект Range, можно с помощью следующего кода:

Dim St As Range

Set St = Range("D3:E5") TextBox1 = St.Rows.Count TextBox2 = St.Columns.Count

Свойства Column и Row позволяют соответственно определить номер левого столбца и номер верхней строки, входящих в объект Range. В примере:

Set St = Range("D3:E5") TextBox1 = St.Row TextBox2 = St.Column

в окне TextBox1 будет получено значение 3, а в окне TextBox2 – значение 4.

В объектной модели Excel также отсутствуют и объекты Cell и Cells, вместо них используется свойство Cells, которое возвращает объект Range. Например, для определения числа ячеек, входящих в диапазон, можно использовать следующие операторы:

MsgBox Range("A1:B2").Cells.Count

TextBox1 = Range("A:A").Cells.Count

24

Cвойство Cells имеется не только у объекта Range, но и у объектов

Application, Worksheets, ActiveSheet, где оно возвращает объект Range,

в состав которого входят все ячейки листа, например:

MsgBox Application.Cells.Count

MsgBox ActiveSheet.Cells.Count MsgBox Worksheets(1).Cells.Count

Будучи примененным к объекту Range, свойство Cells возвращает этот объект без всяких изменений. Например, запись:

MsgBox Range("A1:B2").Cells(1, 2).Value

возвращает объект Range, в качестве которого выступает ячейка, находящаяся на пересечении первой строки и второго столбца, т. е. ячейка B1. В диалоговой панели MsgBox будет отображено значение этой ячейки. С учетом изложенного записи:

TextBox1 = Cells(1, 2).Value,

TextBox2 = Range("B1").Value

– эквивалентны.

Объект Chart (Диаграмма)

Анализ данных в Excel удобно проводить с использованием диаграмм. Диаграммы в Excel создаются с помощью объекта Chart (Диаграмма). В практических задачах часто востребованы такие возможности диаграмм, как тренды.

Создать диаграмму можно путем вызова метода Add() коллекции Charts. Например:

Dim F as Chart

Set F = ActiveWorkbook.Charts.Add(, ActiveSheet)

В данном случае диаграмма будет представлять собой чистый лист. Для указания источника данных используется метод SetSourceData(), единственным обязательным параметром которого является объект

Range.

Второй, необязательный, параметр используется для указания порядка считывания данных. Данные могут считываться сначала по столбцам, а потом по строкам или наоборот:

F.SetSourceData Sheets("Лист1").Range("A1:A10")

25

Для определения типа диаграммы используется свойство ChartType, которое может иметь одно из 73 значений. По умолчанию диаграмма имеет вид гистограммы. Для представления диаграммы в виде обычного графика нужно свойству ChartType присвоить значение xlLineMarkers, например:

F.ChartType = xlLineMarkers

Для добавления дополнительных рядов на диаграмму необходимо создать объект Series – ряд. Свойству Values этого объекта передается в качестве значения объект Range, представляющий собой значения ряда. Пример:

Dim R As Series

Set R = F.SeriesCollection.NewSeries R.Values = Worksheets(1).Range("C2:C10")

По умолчанию диаграмма создается в оперативной памяти и помещается на отдельный чистый лист, затем ее можно разместить с помощью метода Location на листе с данными или на любом другом листе книги Excel. После размещения диаграммы на рабочем листе Excel отдельный лист автоматически исчезнет.

Пример размещения диаграммы на втором листе книги Excel:

F.Location xlLocationAsObject, "Лист2"

Таким образом, создать диаграмму можно с помощью следующего кода:

Dim F As Chart

Set F = ActiveWorkbook.Charts.Add(, ActiveSheet)

F.SetSourceData Sheets("Лист1").Range("B2:B10")

F.ChartType = xlLineMarkers Dim R As Series

Set R = F.SeriesCollection.NewSeries R.Values = Worksheets(1).Range("C2:C10") F.Location xlLocationAsObject, "Лист2"

Дополнительные свойства и методы объекта Chart можно посмотреть в справочной системе VBA.

26

Объект PivotTable (Сводная таблица)

Часто на многих предприятиях бывает востребована аналитическая информация, получаемая на основе обработки первичных данных. Проще всего получают такую информацию с помощью сводных таблиц.

Это может быть актуальным для отдела маркетинга, где нередко требуется информация в определенном разрезе, например во временно´ м разрезе, в разрезе типов продуктов, в разрезе каналов продаж и т. п.

Для работы со сводной таблицей первоначально создается объект PivotCache, который представляет собой набор данных, взятых из определенного источника. В качестве источника данных может выступать диапазон ячеек Excel, база данных Access, многомерные таблицы, а также внешние источники данных.

Создать объект PivotCache можно вызовом метода Add коллекции PivotCaches. Для одной сводной таблицы удается создать только один объект PivotCache. Пример:

Dim S As PivotCache

Dim D As PivotTable

Set S = ActiveWorkbook.PivotCaches.Add _ (SourceType:=xlDatabase, SourceData:="Лист1!R1C1:R16C4")

S.CreatePivotTable TableDestination:= _ "'[SD.xls]Лист1'!R22C1", TableName:="SD1"

Set D = ActiveSheet.PivotTables("SD1")

D.AddFields RowFields:="Тип", ColumnFields:="Склад", _ PageFields:="Дата"

D.PivotFields ("Кол").Orientation = xlDataField

Пример таблицы исходных данных и созданной сводной таблицы показан на рис. 2.

С помощью вызова метода Add коллекции PivotCaches создается объект PivotCache. Метод Add имеет два параметра: SourceType и SourceData. Первый из них определяет тип источника данных – диапазон ячеек Excel, база данных, другая сводная таблица и т. п. Второй параметр определяет диапазон данных, на основе которых создается сводная таблица.

27

Рис. 2. Таблица исходных данных и созданная по ней сводная таблица

Вызов метода CreatePivotTable для созданного объекта PivotCache позволяет создать объект PivotTable – сводную таблицу. Этот метод имеет четыре параметра, один из которых (TableDestination) является обязательным и определяет верхнюю левую ячейку, с которой будет начинаться сводная таблица. Второй параметр (TableName) определяет имя сводной таблицы. Остальные параметры имеют вспомогательное значение и далее рассматриваться не будут.

28

Всозданной сводной таблице предусмотрено четыре области для размещения полей источника данных: область строк, область столбцов, область данных и область страницы.

Область данных занимает центральную часть сводной таблицы и содержит данные для анализа (например, сумму продаж, количество чего-либо и т. п.).

Область страницы содержит поля, по которым нужно проводить только фильтрацию данных. С помощью полей области страницы можно получить отфильтрованную информацию (например, за определенный месяц, по заданному региону и т. п.).

Вобласть столбцов помещаются те измерения, записей в которых меньше. Они представляют собой разрез, в котором будут анализироваться данные.

Вобласть строк помещаются те поля, записей в которых больше.

Объект QueryTable (Таблица запроса)

Доступ к внешним данным, сохраненным в различных форматах, можно осуществить, используя объектную модель ADO (ActiveX Data Object) или DAO (Data Access Object). Обе эти модели предоставляют программный интерфейс баз данных.

Несмотря на возможности программных интерфейсов в ряде случаев можно обойтись и без них, например, используя возможности объ-

ектов Application, Workbook, Worksheet и Range.

ВExcel встроен объект QueryTable, который также может сильно упростить задачу вставки нужных записей базы данных в рабочий лист. Этот объект представляет собой таблицу, содержащую данные, возвращенные из внешнего источника.

Главное его назначение – работа с набором значений, возвращаемых из базы данных. В программном проекте объект QueryTable обычно используют для односторонней передачи данных, когда они загружаются из источника данных в Excel, но изменять данные и сохранять их на источнике не нужно.

ВExcel доступ к объекту QueryTable осуществляется по команде Данные/ Импорт внешних данных/ Импортировать данные. С помощью этого объекта записи из базы данных удается загрузить на лист Excel. Такого рода операция часто необходима для проведения анализа данных, построения диаграмм, отчетов и других процедур с помощью богатых средств Excel.

29

Программно создать объект QueryTable и добавить его в коллекцию QueryTables можно с помощью метода Add этой коллекции. Пример:

ActiveSheet.QueryTables.Add(St),

где St – это строка, определяющая путь доступа к базе данных и ее имя.

2. СРЕДА ПРОГРАММИРОВАНИЯ – РЕДАКТОР VBA

Общие сведения о редакторе VBA

Редактор VBA является встроенной в MS Office системой визуального программирования, созданной на основе языка VBA, и представляет собой интегрированную среду для разработки приложений.

Вход в редактор VBA и выход из него обеспечиваются командой Alt+F11. Запуск редактора возможен также из меню Excel или любого другого приложения MS Office командой Сервис/ Макрос/ Редактор

Visual Basic.

Для возврата из редактора в текущий документ, с которым работает офисная программа, используется комбинация клавиш Alt+Q.

Не выходя из редактора, можно выполнять все необходимые действия по разработке программ: определять структуру программного проекта, писать исходные тексты процедур, запускать программы на исполнение, выполнять их отладку и тестирование.

С помощью редактора VBA можно создавать объекты управления графического интерфейса пользователя, задавать и изменять свойства объектов, подключать к ним соответствующий программный код.

К объектам управления и контроля относятся экранные формы, графические элементы внутри форм, в том числе текстовые окна, командные кнопки, надписи, линейки прокрутки и многое другое.

Для большей части объектов существует графическое изображение, но есть объекты, которые не отображаются на экране.

Управление объектами производится тремя способами:

1)изменением их свойств;

2)обработкой событий;

3)выполнением методов.

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]