Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access. Программирование на VBA. Часть 1.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
251 Кб
Скачать
☆

If mobjOutlook Is Nothing Then

MagBox "MS Outlook is not installed on your computer"

End If

End Sub

Private Sub Class_Terminate()

' Освобождение объектной переменной.

Set mobjOutlook = Nothing

End Sub

Приведенный ниже код инициализирует объект objOutlook и вызывает метод NewEMailMessage:

' Объектные переменные Dimension.

Dim objOutlook As cOutlook

' Присваивание объектных переменных объекту cOutlook.

Set objOutlook = New cOutlook

' Вызов метода "NewEMailMessage".

objOutlook.NewEmailMessage nancy@northwind.com

' Разрушение объектной переменной.

Set objOutlook = Nothing

Применение объекта обработчика ошибок

Рассмотрим пример кода из статьи «Профессиональная обработка ошибок.». Модуль класса обеспечивает обширную обработку ошибок, включая:

• Регистрацию ошибок в таблице Access

• Регистрация ошибок в текстовом файле

• Обработку ошибок электронной почты

• Обработку ошибок записей в календаре Outlook

Рассмотрим объект сЕггог в браузере объектов, как показано на рис. 13.

РИСУНОК 13. Объект сЕггог и браузере объектов

Использование объектов с коллекциями VBA

Коллекции VBA позволяют работать с пользовательски­ми объектами как с группой. Например, если существует пять объектов cUser и необходимо выполнить действие над каждым из них, проще и намного эффективнее обрабаты­вать пять объектов как группу, а не как отдельные объек­ты.

Вероятно, разработчик уже знаком со встроенными коллекциями, такими как коллекции форм и элементов управления. Кроме того, VBA содержит объект коллекции. Коллекция — это способ обращения с группой объектов как с одним элементом. В повседневной жизни люди постоянно имеют дело с кол­лекциями. Дирижер оркестра может сказать: "Все исполнители, играющие на духовых инструментах, встань­те". Это гораздо удобнее и эффективное, чем перечислять: "Мэри, Джим, Джон, Джо, Салли, встаньте". Точно так же можно работать с объектами, составляющими один элемент или коллекцию.

Основная концепция этого подхода заключается в том, что коллекция представляет собой объект со своими собственными свойствами и методами. Коллекция обладает следующими характеристиками:

• Имеет свойства и методы.

• Может быть расширена за счет добавления различных типов объектов.

• Величина коллекции является переменной, а это значит, что коллекция может расширяться и со­кращаться при добавлении и удалении элементов.

• . Элементы в выделенной области не могут быть отсортированы.

• Элементы множества являются индексированными (отсчет начинается с цифры "1").

Создание коллекции VBA

Поскольку коллекции представляют собой объекты, коллекции создаются тем же способом, что и объекты. Во-первых, необходимо объявить объектную переменную для использования в качестве ссылки на коллекцию. Во-вторых, нужно воспользоваться ключевым словом Set для создания ссылки из объек­тной переменной на коллекцию. Следующий код создает коллекцию пользователей:

Dim Users as Collection

Set Users = New Collection

СОВЕТ

Полезно присваивать коллекции имя, представляющее собой множественное число от имен объектов, содержащих­ся в данной коллекции. В данном примере в коллекцию добавляется объект User. Таким образом, коллекции следу-вд. ет присвоить имя Users.

Свойства и методы коллекции VBA

Объект коллекции имеет очень простую структуру и содержит только одно свойство и три метода, как показано в табл. 1.

Таблица 1. Свойства и методы объекта множества.

Имя

Тип

Описание

Count

Свойство

Указывает, сколько элементов содержится в коллекции.

Add

Метод

Используется для добавления элементов в коллекцию.

Remove

Метод

Используется для удаления элементов из коллекции.

Item

Метод

Используется для ссылки на элементы в коллекции. Данный метод действует по умолчанию.

Добавление элементов в коллекцию

Чтобы добавить элементы в коллекцию, необходимо воспользоваться методом Add объекта коллекции.

Collection.Add Item [, Key][, Before];, After]

Затем нужно передать объектную переменную для каждого объекта, добавленного к множеству. Напри­мер, чтобы добавить в коллекцию двух пользователей, следует воспользоваться объектной переменной для каждого пользователя: objUser1 и objUserZ. Следующий параметр — значение Key (удобочитаемое имя), ис­пользующееся для ссылки на объект. Если ключевое значение не указано, ссылка на каждый пункт в коллекции осуществляется по номеру индекса.

СОВЕТ

Настоятельно рекомендуется указывать ключевое значение. Ключевые значения упрощают написание кода и более ,j надежны, чем номера индекса. Номера индекса могут измениться при удалении элементов из коллекции или при '3 вставке в указанные места коллекции с помощью параметров метода Add.

В приведенном ниже примере в коллекцию Users будут добавлены два пользователя:

Dim User1 as cUser

Dim User2 as cUser

Dim Users as Collection

Set User1 = New cUser

Set User2 = New cUser

Set Users = New Collection

User1.Name = "James"

User2.Name = "Steve"

Users.Add User1, User1.Name

Users.Add User2, User2.Name

Set User1 = Nothing

Set User2 = Nothing

Set Users = Nothing

Данный код добавляет в коллекцию объект User1. С помощью свойства Name объекта указано ключе­вое значение. Точно так же добавляется объект User2.

Обратите внимание, что метод Add коллекции содержит аргументы "до" и "после" для определения порядка объектов в коллекции.

Ссылка на специфический объект

К объектам в коллекции можно обращаться либо по номеру, либо по ключевому значению. При ссылке на элементы в коллекции по номеру необходимо помнить, что все элементы индексированы, а это оз­начает, что отсчет начинается с 1. Проще обращаться к объекту в коллекции по ключевому значению. Приведенный ниже код иллюстрирует ссылку на специфический объект User2 с помощью обоих мето­дов. Хотя указывать метод Item не обязательно (он действует по умолчанию), явное обращение способ­ствует повышению восприимчивости кода.

' Обращение к объекту в коллекции по номеру индекса.

MsgBox Users.Item(2).Type

' Обращение к объекту в коллекции по ключевому значении.

MsgBox Users.Item("Steve").Type

Организация циклов по элементам коллекции

Простейший и наиболее эффективный способ организации цикла по объектам в коллекции — исполь­зование цикла For Each. Кроме того, можно воспользоваться циклом For Next, но он выполняется мед­леннее.

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

' Необходимо объявить объектную переменную.