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

标签 excel vba excel-addins

我喜欢将代码从 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/

    相关文章:

    java - 增加 Excel 2010 内存分配

    excel - 列中的每个新值自动乘以 X

    python - Excel - 通过 Python 刷新电源查询数据

    performance - 如何对自定义Excel加载项和自动化功能进行性能测试

    有效密码的单元格上的 Excel 公式

    excel - 使用 PowerShell 读取未安装 Office 的 Excel 文件

    excel - 是否可以在 Excel VBA 中返回复选框的名称?

    function - VBA:Excel 范围总是显示为空?

    reactjs - 如何使用 yo office 创建一个为 React 启用 SSO 的项目