- •Access. Программирование на vba. Часть 1. Создание объектов с помощью модуля классов.
- •MsgBox "The form object (in the 'Form' property) has a name of: " _ mobjForm.Form.Name, vblnfonnation, "Property Set Example"
- •Private Declare Function sndPlaySound Lib "winmm.Dll" Alias _
- •MsgBox "ms Word is not installed on your computer"
- •If mobjOutlook Is Nothing Then
- •Dim User as User For Each User in Users
- •Users.Remove "Steve"
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, необходимо указать объект для рассмотрения в коллекции. Ниже приведен соответствующий код:
' Необходимо объявить объектную переменную.
