В Excel VBA, как запустить событие рабочего листа из надстройки в активную книгу - PullRequest
0 голосов
/ 21 декабря 2018

Мне нравится запускать код из надстройки Excel к активной книге (xlsx).Код должен применять некоторое форматирование к активной ячейке активной рабочей книги, когда она активирована в меню.

Как этого добиться?

Обычно это можно реализовать с помощью события worksheet_change вактивная рабочая тетрадь, но для этого требуется:

  • книга с поддержкой макросов, И
  • с кодом в этой конкретной книге.

Мне нравитсяпримените это через надстройку, независимо от рабочей книги и, следовательно, без необходимости вставлять код в эту рабочую книгу и сначала сделать ее рабочей книгой xlsm.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Спасибо, кажется, у меня есть новые идеи, которые я могу проверить и опробовать.

0 голосов
/ 21 декабря 2018

Вы можете перехватить WorksheetChange события из одного рабочего листа в другом модуле (классе), но в этом случае вы, вероятно, скорее используете Application.SheetChange, как указано выше (код в ThisWorkbook модуле в надстройке):

'Create an object to catch events
Dim WithEvents ExcelApp As Excel.Application

'Assign object when addin opens
Private Sub Workbook_Open()
    Set ExcelApp = Application
End Sub

'Handle sheet changes in all workbooks
Private Sub ExcelApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim rng As Range
    'Do some validation...
    If Sh.Parent.Name = "Book1" And Sh.Name = "Sheet1" Then
        'Ensure correct range
        'Note: changes may occur in many cells at a time (delete, paste, ...)
        Set rng = Intersect(Target, Workbooks("Book1").Worksheets("Sheet1").Range("A1:B2"))
        If Not rng Is Nothing Then
            rng.Interior.ColorIndex = vbRed 'Example
        End If
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...