我喜欢将代码从 Excel 加载项运行到事件工作簿 (xlsx)。当在菜单中激活时,代码应该对事件工作簿的事件单元格应用一些格式。
我怎样才能做到这一点?
通常,您可以通过使用事件工作簿中的 worksheet_change 事件来实现这一点,但这需要:
我喜欢通过独立于工作簿的加载项应用此功能,因此无需在此工作簿中插入代码并首先使其成为 xlsm 工作簿。
最佳答案
你可以抓到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
关于excel - 在 Excel VBA 中,如何将工作表事件从加载项运行到事件工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53881479/