繁体   English   中英

在Excel VBA中,如何从加载项到活动工作簿运行工作表事件

[英]In Excel VBA, how to run a worksheet event from add-in to active workbook

我喜欢从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

谢谢你们,似乎我可以在这里进行测试并尝试新的见解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM