Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование в Excel.doc
Скачиваний:
21
Добавлен:
03.05.2019
Размер:
1.48 Mб
Скачать

3.7.7. Модули классов и события

В отличие от листов диаграмм, события, связанные с внедренными диаграммами и объектом Application, по умолчанию отключены. Прежде чем Вы сможете работать с событиями применительно к внедренной диаграмме или объекту Application, Вы должны создать новый модуль класса и объявить в нем объект типа Chart или Application с событиями. Для создания нового модуля класса в редакторе Visual Basic предназначена команда Class Module (Модуль класса) из меню Insert (Вставка).

Чтобы включить события для объекта Application, добавьте в модуль класса объявление:

Public WithEvents Арр As Application

После того как новый объект с событиями объявлен, он появляется в списке Object (Объект) модуля класса, и Вы можете писать для него процедуры обработки событий. [При выборе этого объекта в списке Object (Объект) события, допустимые для него, перечисляются в списке Procedure (Процедура).]

Но, прежде чем работать со своими процедурами, Вы должны подключить объект, объявленный в модуле класса, к объекту Application. Для этого объявите в любом модуле:

Public Х As New EventGlass

где EventClass — имя модуля класса, созданного Вами для обработки событий.

Создав объектную переменную Х (экземпляр класса EventClass), Вы можете приравнять объект Арр класса EventClass объекту Application Microsoft Excel:

Sub InitializeApp() Set X.Арр = Application End Sub

После выполнения процедуры InitializeApp объект Арр в модуле класса EventClass указывает на объект Application Microsoft Excel, и определенные в модуле процедуры обработки событий будут выполняться при каждом возникновении соответствующих событий.

Хотя все это вроде бы требует большого объема работы, преимущество такой схемы в том, что можно использовать одну и ту же процедуру обработки событий для многих объектов. Пусть, например, в модуле класса объявлен объект Chart с событиями:

Public WithEvents cht As Chart

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

Dim С1 As New EventClass Dim C2 As New EventClass

Sub IntitializeCharts() Set Cl.cht = Worksheets(1).ChartObjects(1).Chart Set C2.cht = Worksheets(1).Chart0bjects(2).Chart End Sub

В модуле класса допускается объявлять объекты Worksheet или Workbook с событиями и использовать процедуры обработки событий нового класса с несколькими листами — в дополнение к стандартным процедурам обработки событий. Это позволяет написать процедуру обработки события Activate, выполняемую только при активизации, скажем, первого или пятого листа. Или использовать объект Chart, объявленный в модуле класса, чтобы создать процедуру обработки событий как для внедренных диаграмм, так и для листов диаграмм.

Лабораторная работа 4.

Использование элементов объектного программирования.

Задание:

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

Подпрограмма вычисления суммы чисел, записанных в текущем листе книги в ячейках С4:С13, результат заносится в ячейку С14:

Sub Сумма()

Summa = 0

For i = 4 To 13 Step 1

Summa = Summa + Range("C" + LTrim$(Str$(i)))

Next i

Range("C" + LTrim$(Str$(i))) = Summa

End Sub

Подпрограмма вычисления произведения чисел, записанных в текущем листе книги в ячейках С4:С13, результат заносится в ячейку С15:

Sub Произведение()

Product = 1

For i = 4 To 13 Step 1

Product = Product * Range("C" + LTrim$(Str$(i)))

Next i

Range("C" + LTrim$(Str$(i + 1))) = Product

End Sub

Подпрограмма вычисления функции (квадратичной параболы) чисел, записанных в текущем листе книги в ячейках С4:С13, результат заносится в ячейки D4:D14:

Sub Функция()

For i = 4 To 13 Step 1

Funcia = Range("C" + LTrim$(Str$(i))) ^ 2

Range("D" + LTrim$(Str$(i))) = Funcia

Next i

End Sub

Подпрограмма вызова управляющей формы:

Sub Start()

Управляющая.Show

End Sub

Программа кнопки «Сумма»

Private Sub CommandButton1_Click()

Call Сумма

End Sub

Программа кнопки «Призведение»

Private Sub CommandButton2_Click()

Call Произведение

End Sub

Программа кнопки «Функция»

Private Sub CommandButton3_Click()

Call Функция

End Sub

Рис.3.1. Вид управляющей формы

Для создания процедур, пользовательских форм, модулей следует пользоваться меню «Вставка» в среде Visual Basic. Для создания программы кнопки следует в редакторе формы выполнить двойной щелчек левой кнопки мыши на поверхности программируемой кнопки.