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

3.7.3. События на уровне рабочего листа

События на уровне листа возникают при активизации листа или изменении его ячеек, как показано в таблице:

Событие

Описание

Activate

Возникает при активизации листа. Используйте это событие вместо свойства OnSheetActivate.

BeforeDoubleClick

Возникает при двойном щелчке ячейки листа. Используйте это событие вместо свойства OnDoubleClick.

BeforeRightClick

Возникает при щелчке ячейки листа правой кнопкой мыши.

Calculate

Возникает при пересчете листа. Используйте это событие вместо свойства OnCalculate.

Change

Возникает при изменении формулы в ячейке. Используйте это событие вместо свойства OnEntry.

Deactivate

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

SelectionChange

Возникает при выделении ячейки листа.

Подробнее об этих событиях см. соответствующие разделы справочной системы.

Примеры

В следующем примере при каждом пересчете листа происходит коррекция размеров колонок от А до F:

Private Sub Worksheet_Calculate() Columns("A:F").AutoFit End Sub

Некоторые события позволяют изменять стандартное поведение приложения. Например, можно перехватывать щелчки правой кнопкой мыши и добавлять в контекстное меню для ячеек В1:В10 новую команду:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) For Each icbc In Application.CommandBars("cell").Controls If icbc.Tag = "brccm" Then icbc.Delete Next icbc If Not Application.lntersect(Target, Range("b1:b10")) Is Nothing Then With Application.CommandBars("cell").Controls .Add(Type:=msoControlButton, before:=6, temporary:=True) .Caption = "New Context Menu Item" .OnAction = "MyMacro" .Tag = "brccm" End With End If End Sub

3.7.4. События на уровне диаграммы

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

Событие

Описание

Activate

Возникает при активизации листа диаграммы (не работает для внедренных диаграмм). Используйте это событие вместо свойства OnSheetActivate.

BeforeDoubleClick

Возникает при двойном щелчке диаграммы. Используйте это событие вместо свойства OnDoubleClick.

BeforeRightClick

Возникает при щелчке диаграммы правой кнопкой мыши.

Calculate

Происходит, когда пользователь инициирует построение диаграммы по новым или измененным данным.

Deactivate

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

DragOver

Возникает при перемещении мышью данных поверх диаграммы.

DragPlot

Возникает при перемещении мышью диапазона ячеек поверх диаграммы.

MouseDown

Возникает при щелчке кнопки мыши, когда ее указатель находится над диаграммой.

MouseMove

Возникает при перемещении указателя мыши над диаграммой.

MouseUp

Возникает при отпускании кнопки мыши, когда ее указатель находится над диаграммой.

Resize

Возникает при изменении размера диаграммы.

Select

Возникает при выделении какого-либо элемента диаграммы.

SeriesChange

Возникает при изменении данных в какой-либо точке диаграммы.

Подробнее об этих событиях см. соответствующие разделы справочной системы.

События, связанные с листами диаграмм, доступны в редакторе Visual Basic по умолчанию. Чтобы написать процедуру обработки события для внедренной диаграммы, создайте новый объект в модуле класса с помощью ключевого слова WithEvents.

Пример

Эта процедура изменяет на диаграмме цвет точки при изменении пользователем ее значения:

Private Sub Chart_SeriesChange(ByVal Seriesindex As Long._ ByVal Pointindex As Long) Set p = ActiveChart.SeriesCollection(Serieslndex).Points(Pointlndex) p.Border .ColorIndex = 3 End Sub