Алексей Гладкий - Excel. Трюки и эффекты
- Название:Excel. Трюки и эффекты
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Гладкий - Excel. Трюки и эффекты краткое содержание
Excel. Трюки и эффекты - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
' Выполнение операций с дискетой
Open «A:\Text.txt» For Output As 1
Write #1, strText
Close 1
' Действия выполнены успешно
dhWriteToFloppy = True
ExitFunc:
' Выход из функции до обработчика ошибок
Exit Function
ErrHandler:
' Закрытие файла, если его все-таки удалось открыть
Close 1
Dim strErrMessage As String
' Идентификация ошибки и формирование текста сообщения
Select Case Err.Number
Case 71
strErrMessage = «Нет диска в дисководе»
Case 70
strErrMessage = «Диск защищен от записи»
Case 61
strErrMessage = «Нет места на диске»
Case Else
strErrMessage = Err.Description
End Select
' Отображение сообщения об ошибке
MsgBox strErrMessage, vbExclamation, «Ошибка»
' Продолжение выполнения программы
dhWriteToFloppy = False
Resume ExitFunc
End Function
Если запись удается, то функция возвращает значение True. Если возникает ошибка, то выдается соответствующее сообщение, после чего функция возвращает значение False. На примере функции dhWriteToFloppy следует заметить, что при нормальном выполнении программы (без возникновения ошибок) обработчик ошибок выполняться не должен, что достигается выходом из функции до обработчика с помощью инструкции Exit Function.
Классы в VBA
Язык программирования VBA является объектно-ориентированным, хотя и не поддерживает наследование и полиморфизм. VBA-программист может работать с встроенными классами, а также создавать и использовать свои собственные классы.
Создание класса на VBA
Создание класса на VBA отличается от других языков программирования (таких как C++), в которых описание классов во многом аналогично описанию структур.
В VBA для каждого класса в проект должен быть добавлен отдельный модуль, в который помещается код, реализующий работу класса, – модуль класса. Добавление нового модуля класса осуществляется с помощью команды меню Insert → Class Module (Вставить → Модуль класса) редактора Visual Basic. Имя модулю класса присваивается с помощью окна Properties (Свойства), которое показано на рис. 1.3.
Имя, которое присвоено добавленному модулю, и будет являться именем нового класса. В данном случае имя созданного класса – Class1. В качестве примера с помощью этого класса будет реализовано хранение ссылки на объект, а также хранение некоторой информации об объекте.

Рис. 1.3. Назначение имени классу
Свойства класса
Свойства для классов в VBA могут быть реализованы двумя способами. Первый способ – это использование в модуле класса общих переменных-членов (объявленных с атрибутом Public). Добавим таким способом свойство в созданный ранее класс Class1, в котором будет храниться строка с описанием данных, содержащихся в объекте-экземпляре этого класса:
Public strTag As String
Такой способ реализации свойств является самым простым, однако в нем не предусмотрена возможность контролировать правильность задания параметра и осуществлять какие-либо действия при изменении его значения. Для решения этой проблемы можно использовать второй способ – создание процедур и функций, которые выполняются при установке и получении значений свойств соответственно. Для этих целей в модуле класса применяются обычные объявления процедур и функций, в которых используется ключевое слово Property.
Для получения значения свойства предназначена функция, объявленная с использованием Property Get:
[Public | Private] [Static] Property Get Имя_свойства ([Аргументы]) _
[As Имя_типа]
[Инструкции]
[Имя_свойства = Выражение]
[Exit Property]
[Инструкции]
[Имя_свойства = Выражение]
End Property
Для присвоения значения свойству, не являющемуся ссылкой на объект, предназначена процедура, объявленная с использованием Property Let:
[Public | Private] [Static] Property Let Имя_свойства ([Аргументы,]Значение)
[Инструкции]
[Exit Property]
[Инструкции]
End Property
Для присвоения значения свойству, являющемуся ссылкой на объект, предназначена процедура, объявленная с использованием Property Set:
[Public | Private] [Static] Property Set Имя_свойства ([Аргументы,]Значение)
[Инструкции]
[Exit Property]
[Инструкции]
End Property
Использование процедур и функций с ключевым словом Property очень удобно для создания свойств только для чтения (для этого свойства не реализуются Property Let и Property Set) и свойств только для записи (не реализуется Property Get).
Разберем реализацию свойств ObjectRef и ObjectType для рассматриваемого класса Class1 (частная переменная-член objRef используется для хранения установленной ссылки на объект):
Private objRef As Object
Property Set ObjectRef(objNewRef As Object)
' Задание ссылки хранимого объекта
Set objRef = objNewRef
End Property
Property Get ObjectRef() As Object
' Возврат ссылки на хранимый объект
Set ObjectRef = objRef
End Property
Property Get ObjectType() As String
' Возврат имени типа хранимого объекта
ObjectType = TypeName(objRef)
End Property
Методы класса
Любая функция или процедура, описанная в модуле класса, является методом этого класса. Методы делятся на общие (описаны с использованием Public) и частные (описаны с использованием Private).
Ниже приведена реализация метода для созданного нами класса Class1, при обращении к которому на экран выводится сообщение со значениями атрибутов класса:
Sub ShowInfo()
' Отображение окна со значением свойства strTag и именем типа _
объекта, на который хранится ссылка
MsgBox "strTag = " & strTag & vbCrLf & _
"Object type = " & ObjectType
End Sub
Использование класса в программе
Как было сказано в начале главы, операции со всеми объектами VBA осуществляет только с использованием ссылок. Объявление ссылок на объекты было рассмотрено в разделе, посвященном переменным в VBA. Здесь будет рассмотрено лишь применение объекта созданного ранее класса Class1. Для создания ссылки на объект можно использовать следующее объявление:
Dim obj As Class1
После создания ссылки сам объект создается с помощью инструкции Set:
Set obj = New Class1
Объявление переменной ссылки и создание объекта можно также совместить:
Dim obj As New Class1
Для доступа к свойствам и методам объекта используется точка, например:
obj.strTag = «Некоторый текст»
Set obj.ObjectRef = Nothing
MsgBox obj.ObjectType
obj.ShowInfo
Ниже приведен пример процедуры, которая использует реализованный класс
Class1:
Sub TestClass()
' Создание объекта
Dim obj As New Class1
' Установка свойств
Set obj.ObjectRef = New Collection
obj.strTag = "В этом объекте хранится ссылка на объект
Collection"
' Вызов метода
obj.ShowInfo
End Sub
В результате работы данной процедуры на экран будет выведено окно сообщения, показанное на рис. 1.4.

Рис. 1.4. Окно с информацией о свойствах объекта
Как можно заметить, в процедуре TestClass не происходит явного уничтожения ссылки на объект класса Class1. Дело в том, что ссылка obj – локальная переменная процедуры. А при выходе из процедуры данные всех локальных (не статических) переменных уничтожаются, в том числе удаляются и локальные ссылки на объекты.
Читать дальшеИнтервал:
Закладка: