Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование VBA.pdf
Скачиваний:
374
Добавлен:
03.05.2015
Размер:
3.07 Mб
Скачать

28

Здесь Workbooks и Worksheets – это коллекции, Книra1 – это элемент коллекции Workbooks. Объект Range не является коллекцией. Одно из определяющих свойств коллекции – возможность добавлять в нее новые элементы. В объект Range нельзя добавить другие диапазоны ячеек, так как в Excel диапазоны жестко определены и ограничены еще во время их задания.

На рис. 1 внизу окна объектной модели Excel приведены обозначения цветовых выделений объектной модели. Желтым цветом выделены объекты и коллекции, голубым – объекты, не являющиеся коллекциями.

2.8.3.5. Метод Add

В коллекции можно добавлять новые элементы. Для этого используется метод Add (Добавить). Например, новую рабочую книгу можно создать с помощью следующего кода:

Workbooks.Add

Этот код эквивалентен выполнению в Excel команды Файл | Создать. Чтобы добавить новый лист в рабочую книгу, используется код

Worksheets.Add

2.8.3.6. Свойство Count

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

Dim КолРабЛист As Integer КолРабЛист = Worksheets.Count

Можно найти много применений свойству Count. Предположим, вы создаете приложение, где рабочая книга должна содержать отдельный лист на каждый рабочий день недели. С помощью свойства Count можно проверить, сколько содержит рабочая книга рабочих листов. Код процедуры представлен ниже.

Sub КолРабЛист () Dim КолРЛ As Byte Dim Сообщ As String

КолРЛ = Worksheets.Count

Сообщ = "Книга содержит " & КолРЛ Сообщ = Сообщ & " листов " MsgBox Сообщ

End Sub

2.8.4.Свойства и методы основных объектов Excel

2.8.4.1.Объект Application

Объект Application (Приложение) занимает самый верхний уровень иерархии объектов Excel и управляет установками и параметрами уровня

29

приложения, т.е. такими, которые можно найти в диалоговом окне Параметры программы Excel.

Объект Application содержит также встроенные функции Excel, и его необходимо использовать для применения в процедуре VBA встроенных функций Excel. В процедуре МодФункции моделируются функции Excel Average (Среднее) и Sum (Сумма).

Option Base 1 Sub МодФункции()

Dim Число As Variant Число = Array(10, 20, 30, 40) Dim СрЗнач As Integer

СрЗнач = Application.Average(Число)

MsgBox "Среднее значение массива = " & СрЗнач

MsgBox "Сумма значений массива = " & Application.Sum(Число) End Sub

В процедуре МодФункции для подсчёта среднего значения и суммы используются функции VBA Excel Average и Sum, параметром которых является массив Число, значения которого задаются при помощи функции VBA Excel Array. Ниже приведены результаты выполнения процедуры

МодФункции.

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

Объект Application имеет множество свойств и методов. Из свойств выделим следующие.

ActiveWorkbook – возвращает активную (текущую) книгу.

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

ActiveCell – возвращает активную ячейку на активном листе активной рабочей книги.

ThisWorkbook – возвращает рабочую книгу, где находится выполняемая процедура.

Selection – определяет текущее выделение. Выделением может быть диапазон ячеек, элементы диаграммы и т.п.

Среди методов объекта Application выделим следующие.

InputBox – отображает окно ввода и позволяет указать тип возвращаемого значения.

30

OnKey – устанавливает выполнение указанной процедуры при нажатии заданной комбинации клавиш.

OnTime – назначает выполнение указанной процедуры на определённое время.

Quit – применяется для выхода из Excel.

2.8.4.2. Объект Worksheet

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

Свойства объекта Worksheet

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

1. Cells – возвращает ячейку рабочего листа.

Формат свойства:

Worksheets(индекс).Cells(<№ строки>,<№ столбца>),где

индекс – номер или имя рабочего листа,

<№ строки>,<№ столбца> – целочисленные выражения, задающие значения № строки и № столбца рабочего листа.

Пример

‘Ячейка, находящаяся в строке 2 в столбце 5 (ячейка E5) листа Лист1, получает значение 10.

i=1

k=5 Worksheets(Лист1).Cells(i*2+1,k).Value=10

2. Name – возвращает имя рабочего листа.

Формат свойства:

ActiveSheet.Name = < имя рабочего листа>

Пример

‘Активный рабочий лист получает имя “Товары”

ActiveSheet.Name =“Товары”

Методы объекта Workbook

При работе с объектом Worksheet часто применяются следующие методы:

Activate – активизирует рабочий лист;

Add – вставляет новый лист в рабочую книгу;

CheckSpelling – используется для проверки орфографии содержимого рабочего листа;

Delete – удаляет рабочий лист из рабочей книги.

Пример

31

В приведённом ниже коде объявляется переменная-объект НовыйЛист, которой затем назначается создаваемый рабочий лист с именем Склад.

Dim НовыйЛист As Worksheet Set НовыйЛист = Worksheets.Add

НовыйЛист.Name= “Склад”

2.8.4.3.Объект Range

ВVBA ячейки рабочего листа трактуются как объект Range. Среди всех объектов Excel этот объект используется наиболее часто.

Вкачестве объекта Range могут выступать:

отдельная ячейка;

выделенный диапазон ячеек;

несколько выделенных диапазонов ячеек (т.е. совокупность несмежных диапазонов);

строка и столбец;

трехмерный диапазон (т.е. состоящий из диапазонов, расположенных на разных рабочих листах).

Свойства объекта Range

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

Address (Адрес) – возвращает текущее положение диапазона.

Count (Счет) – возвращает количество ячеек в диапазоне.

Formula (Формула) – возвращает формулу, по которой вычисляется значение, отображаемое в ячейке.

Offset (Смещение) – возвращает величину смещения одного диапазона относительно другого.

Resize (Изменение размеров) – позволяет изменять текущее выделение диапазона.

Value (Значение) – возвращает значения ячеек, составляющих диапазон.

Пример

На листе Лист1 в ячейке B4 находится число 4 и в ячейке A1 – формула =B4. В модуле Module1 хранится процедура СвойстваДиапазона:

Sub СвойстваДиапазона()

Worksheets("Лист1").Range("A1:B2").Activate

MsgBox "Количество ячеек в диапазоне " & Range("A1:B2").Count MsgBox "Текущая ячейка " & ActiveCell.Address ActiveCell.Offset(2, 2).Activate

MsgBox "Текущая ячейка " & ActiveCell.Address Range("A1").Formula = "=B4"

MsgBox "Формула в ячейке A1 " & Range("A1").Formula MsgBox "Значение ячейки A1= " & Range("A1").Value

End Sub

32

Инструкция

Range("A1:B2").Activate

выделяет диапазон A1:B2 рабочего листа Лист1 при помощи метода

Activate (рис. 3).

Рис.3. Выделение диапазона ячеек

Функции

MsgBox "Количество ячеек в диапазоне " & Range("A1:B2").Count MsgBox "Текущая ячейка " & ActiveCell.Address

выводят при помощи свойств Count и Address количество ячеек в выделенном блоке и адрес текущей ячейки:

Текущая ячейка получила адрес $C&3 в результате выполнения инструкции

ActiveCell.Offset(2, 2).Activate

свойство которой Offset(2,2) задаёт смещение на две ячейки относительно ячейки A1.

Инструкция

Range("A1").Formula = "=B4"

Помещает формулу =B4 в ячейку A1.

Функции

MsgBox "Формула в ячейке A1 " & Range("A1").Formula MsgBox "Значение ячейки A1= " & Range("A1").Value