Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 从模块访问工作表方法_Vba_Excel - Fatal编程技术网

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”)?感谢您的解决方案。我的问题仍然存在,因为在使用新代码更新工作簿时,无法在工作表模块中添加工作表更改方法。我只能用另一个宏中更新的模块替换我的自定义模块。请看以下内容:,这将允许您直接在现有模块中插入代码,例如,在
此工作簿
模块中插入第二个命题
工作簿