Excel vba:调用工作表\u从其他工作表更改
假设我有一个包含两个工作表的工作簿:Excel vba:调用工作表\u从其他工作表更改,excel,vba,Excel,Vba,假设我有一个包含两个工作表的工作簿: Sheet1和Sheet2 在表1中有一个工作表\u更改子项: Private Sub Worksheet_Change(ByVal Target As Range) ... End Sub 在工作表2中有一个工作表\u Calculate: Private Sub Worksheet_Calculate() 'Call Sheets("Sheet1").Worksheet_Change(Range("A1")) 'doesn't wor
Sheet1
和Sheet2
在表1
中有一个工作表\u更改
子项:
Private Sub Worksheet_Change(ByVal Target As Range)
...
End Sub
在工作表2中有一个工作表\u Calculate
:
Private Sub Worksheet_Calculate()
'Call Sheets("Sheet1").Worksheet_Change(Range("A1")) 'doesn't work
End Sub
如何调用Sheet1
'a工作表\u Change
子例程,从Sheet2
中的工作表\u Calcalculate
?您可以使用应用程序。像这样运行
Application.Run "Sheet1.Worksheet_Change", Range("A1")
请注意,Sheet1
此处是工作表的VBA名称,而不是选项卡上的名称。可以在图纸的属性窗口(在VB编辑器中)中更改VBA名称
或者,将工作表中的代码\u Change
移动到如下模块中:
Public Sub MySpecificWorksheet_Change(ByVal Target As Range)
...
End Sub
从工作表\u Change
和工作表\u Calculate
Private Sub Worksheet_Change(ByVal Target As Range)
MySpecificWorksheet_Change(ByVal Target As Range)
End Sub
Private Sub Worksheet_Calculate()
MySpecificWorksheet_Change(ByVal Target As Range)
End Sub
要么:
- 将
Private子工作表\u Change
更改为Friend子工作表\u Change
- 将
私有子工作表\u Change
的功能移动到朋友/公共子工作表中,并从工作表\u Change
和工作表\u Calculate
调用它。[建议]
在工作表中调用事件与在任何模块或对象中调用任何非显式的“私有”Sub
或函数没有区别。如果他们不是公众
或朋友
,他们不会在不提及他们居住的地方的情况下给出他们的功能、子功能和属性
如果事件之前未使用关键字Private
进行修改,则可以使用以下代码调用它们:
Sub TestMe
Sheet1.Worksheet_Change Range("A1")
End Sub
如果有人在事件开始时明确添加了单词Private
,则如下所示:
<代码>私有子工作表更改(ByValAbjor为范围),那么我们确实应该考虑不访问事件。如果仍然要访问它,可以使用
应用程序运行
Application.Run "Sheet1.Worksheet_Change", Sheet1.Range("A1")
Application.Run CStr(Worksheets(1).CodeName & ".Worksheet_Change"), Range("A1")
我得到一个无法运行宏“Sheet1.Wokrsheet\u change”。可能此宏不存在或所有宏都已关闭“
错误(从我的excel版本翻译)请注意,Sheet1
是工作表的VBA名称(将该信息添加到答案中)。谢谢,我更改了工作表的VBA名称,现在可以使用了!