Vba 从模块访问工作表方法
以下是我正在努力实现的目标。我希望向用户显示一条消息,说明特定工作表已更改,并要求用户手动在该工作表上运行宏。我可以像这样使用工作表更改方法Vba 从模块访问工作表方法,vba,excel,Vba,Excel,以下是我正在努力实现的目标。我希望向用户显示一条消息,说明特定工作表已更改,并要求用户手动在该工作表上运行宏。我可以像这样使用工作表更改方法 Private Sub OptionButton1_Click() Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "Hey! Cell " & Target.Address(0, 0) & " just changed!", End Sub 上述代码必须在工作表模
Private Sub OptionButton1_Click()
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "Hey! Cell " & Target.Address(0, 0) & " just changed!",
End Sub
上述代码必须在工作表模块中。我想知道是否有办法从我的自定义模块中执行此操作,原因是我有数千个需要更新的excel工作簿,我可以轻松地用另一个宏替换旧模块,更新后的模块通常用于更新工作簿中的代码。在自定义模块中,放置以下内容:
Public Sub My_Code_for_Changes(Target As Range)
MsgBox "Hey! Cell " & Target.Address(0, 0) & " just changed!"
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
My_Code_for_Changes Target
End Sub
在工作表的模块中,您只需放置以下内容:
Public Sub My_Code_for_Changes(Target As Range)
MsgBox "Hey! Cell " & Target.Address(0, 0) & " just changed!"
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
My_Code_for_Changes Target
End Sub
或处理工作簿的所有工作表(可以排除某些工作表): 为此:
Public Sub My_Code_for_Changes(Target As Range, Sh As Worksheet)
MsgBox "Hey! Cell " & Target.Address(0, 0) & " in sheet " & Sh.Name & " just changed!"
End Sub
您可以为这种情况创建一个外接程序文件作为应用程序级事件处理程序 这种方式的优点是:
-可以用于打开的每个工作簿,而无需再次复制任何代码为什么不调用另一个宏(使用vba函数“Call methodName”)?感谢您的解决方案。我的问题仍然存在,因为在使用新代码更新工作簿时,无法在工作表模块中添加工作表更改方法。我只能用另一个宏中更新的模块替换我的自定义模块。请看以下内容:,这将允许您直接在现有模块中插入代码,例如,在
此工作簿
模块中插入第二个命题工作簿
!