我有一本工作簿,里面有几十张工作表,而且还在增加。我也可能很快就会得到这本工作簿的副本。
每个工作表都基于相同的工作表模板,其中包含一个宏,Worksheet_Change
用于自动计算的事件。当我改进工作簿并添加功能并添加工作表时,将更新的宏复制粘贴到所有工作表所需的时间越来越长。
我想知道是否有办法:
和/或
解决方案#2 会更好,因为我认为更优雅?但我不知道是否可能。除非我很乐意为节省时间而选择#1!
先感谢您。
如果我们谈论的是一个包含多个工作表的工作簿,那么一种简单的方法(解决更新问题)是:
添加一个模块并编写一个包含原始更改事件代码的过程:
Option Explicit
Public Sub MyGlobalWorksheet_Change(ByVal Target As Range)
' here the code from your orignal Worksheet_Change.
' make sure you reference worksheets correctly
' the worksheet can eg be addressed like
' set ws = Target.Parent
End Sub
因此,在您的工作表中,您只需要添加一个通用调用,例如
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
MyGlobalWorksheet_Change Target
End Sub
调用全局过程。因此,Worksheet_Change
事件永远不需要更改,但是您只需要添加一次即可。
每当您需要更改代码中的某些内容时,您只需要更改一个过程,MyGlobalWorksheet_Change
它会立即影响您想要的所有工作表(但只会影响您将调用添加到全局事件的工作表)。
请记住,一遍又一遍地复制相同的代码总是一个坏主意,因为它很难维护。而是始终使用您一次又一次调用的一个过程。
另一种方法是Workbook_SheetChange
在ThisWorkbook
范围内使用事件。但这会影响工作簿中的任何工作表。之前的解决方案只会影响您通过添加调用选择的工作簿。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句