Microsoft Excel:

  Таблицы и VBA. Справочник.
  Вопросы и Ответы. Советы. Примеры.
Меню Заметки | Событие для всех диаграмм (Chart, ChartObject), в т.ч. и новых


Rambler's Top100


Counter CO.KZ

XL2010

Если Вам необходимо, чтобы все диаграммы текущей рабочей книги генерировали одно и тоже событие, то создайте модуль класса с именем Class1 и

Модуль книги ThisWorkbook (ЭтаКнига)
Private objCollection As New Collection

Private Sub Workbook_Open()
    Dim objSheet As Object
    Dim objEmbChart As ChartObject

    For Each objSheet In Me.Sheets
        Select Case TypeName(objSheet)
            Case "Chart"
               AddObject objSheet
            Case "Worksheet"
               For Each objEmbChart In objSheet.ChartObjects
                   AddObject objEmbChart.Chart
               Next
        End Select
    Next
End Sub

Private Sub Workbook_NewChart(ByVal Ch As Chart) 'Excel 2010(и старше)
    AddObject Ch
End Sub

Private Sub AddObject(objChart As Chart)
    Dim clsEvents As New Class1
    Set clsEvents.objChart = objChart
    
    objCollection.Add clsEvents
End Sub
Второй вариант перебора всех диаграмм.
Private Sub Workbook_Open()
    Dim objChart As Chart
    Dim objWorksheet As Worksheet
    Dim objEmbChart As ChartObject

    For Each objChart In Me.Charts
        AddObject objChart
    Next
    For Each objWorksheet In Me.Worksheets
        For Each objEmbChart In objWorksheet.ChartObjects
            AddObject objEmbChart.Chart
        Next
    Next
End Sub

Модуль класса Class1
Public WithEvents objChart As Chart
Теперь, выбрав в первом поле со списком objChart, во втором, Вы получите полный список событий диаграммы, которые можно использовать в текущей версии приложения.



Комментарий : Для того, чтобы все диаграммы, включая те, что будут созданы в процессе работы с книгой, могли генерировать одно и тоже событие, необходимо выполнить событие Workbook_Open Т.е. либо Вы "запускаете" его сами и тестируете этот пример. Либо просто сохраняете все внесённые изменения и при следующем открытии книги, содержащей это событие, оно будет выполнено автоматически.


Автор идеи Chip Pearson
© 2004-2018 Климов П.Ю. Все права защищены. WebDesign & Error's Klimoff