在Microsoft Excel中,我为工作表更改事件编写了一些代码。现在我想创建一个sub并将其放在 personal.xlsb 文件中,以便每当用户运行它时,它会将更改事件应用于活动工作表。< / p>
是否可以使用VBA进行此操作?
答案 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)
这是我做的事情(可能有其他方法):
Personal
或其他工作簿中)。模板将包含正确的列宽,行高,标签,公式等。它还将包含任何必要的工作表代码,如选择或更改事件。它还将包含与工作表上的表单相关联的任何代码。答案 2 :(得分:1)
此类任务最好降级为加载项文件。加载项只不过是打开Excel时自动打开的批量标准Excel文件。 Addins比个人宏工作簿中的代码更容易分发...您只需通过电子邮件发送文件以及如何安装它的说明。您甚至可以使用非加载项宏文件,然后单击“我”。将文件另存为插件并自动安装的按钮。谷歌会发现这种事情的例子。
可能值得投资一本书,如John Walkenbach与VBA或Bovey等专业Excel开发的Power Programming。
此处还有很多关于此类事情的问题,其中包括如何修改事件以适用于任何工作表: How can an Excel Add-In respond to events in any worksheet?