以编程方式应用工作表事件

时间:2018-04-07 17:48:29

标签: excel vba

在Microsoft Excel中,我为工作表更改事件编写了一些代码。现在我想创建一个sub并将其放在 personal.xlsb 文件中,以便每当用户运行它时,它会将更改事件应用于活动工作表。< / p>

是否可以使用VBA进行此操作?

3 个答案:

答案 0 :(得分:3)

@ Gary的学生的方法我认为这是一种非常明智的方法,如上所述,加载项是执行此操作的常用方法。

如果您对如何通过代码添加它感兴趣,请每次看到以下构造。它会向您介绍关键元素,但您可以进行调整。

Public Sub AddWorksheetEventCode()
'Tools > references > Microsoft Visual Basic for Applications Extensibility 5.3 
'Trust access to VBA model

    Dim wb As Workbook
    Dim wsNew As Worksheet

    Set wb = ThisWorkbook

    Dim xPro As VBIDE.VBProject
    Dim xCom As VBIDE.VBComponent
    Dim xMod As VBIDE.CodeModule
    Dim xLine As Long

    wb.Worksheets.Add After:= wb.Worksheets(ActiveSheet.Index)
    Set wsNew = ActiveSheet

    With wsNew
        Set xPro = wb.VBProject
        Set xCom = xPro.VBComponents(wsNew.Name)
        Set xMod = xCom.CodeModule

        With xMod

            xLine = .CreateEventProc("Change", "Worksheet")
            xLine = xLine + 1
            .InsertLines xLine, "myFirstCodeLineForEvent"
            xLine = xLine + 1
            .InsertLines xLine, "myNextLine" 'etc

        End With

    End With

End Sub

答案 1 :(得分:2)

这是我做的事情(可能有其他方法)

  1. 创建模板工作表(可以在Personal或其他工作簿中)。模板将包含正确的列宽,行高,标签,公式等。它还将包含任何必要的工作表代码,如选择或更改事件。它还将包含与工作表上的表单相关联的任何代码。
  2. 编写一些代码(驻留在目标工作簿中),它将模板表复制到目标工作簿。

答案 2 :(得分:1)

此类任务最好降级为加载项文件。加载项只不过是打开Excel时自动打开的批量标准Excel文件。 Addins比个人宏工作簿中的代码更容易分发...您只需通过电子邮件发送文件以及如何安装它的说明。您甚至可以使用非加载项宏文件,然后单击“我”。将文件另存为插件并自动安装的按钮。谷歌会发现这种事情的例子。

可能值得投资一本书,如John Walkenbach与VBA或Bovey等专业Excel开发的Power Programming。

此处还有很多关于此类事情的问题,其中包括如何修改事件以适用于任何工作表: How can an Excel Add-In respond to events in any worksheet?