Excel vba:从另一个工作表调用 Worksheet_change

Ans*_*Ans 5 excel vba

假设我有一个包含两个工作表的工作簿:

Sheet1Sheet2

有一个Worksheet_change子项Sheet1

Private Sub Worksheet_Change(ByVal Target As Range)
    ...
End Sub
Run Code Online (Sandbox Code Playgroud)

有一个Worksheet_CalculateSheet2

Private Sub Worksheet_Calculate()
    'Call Sheets("Sheet1").Worksheet_Change(Range("A1"))  'doesn't work
End Sub
Run Code Online (Sandbox Code Playgroud)

我如何从in调用Sheet1'aWorksheet_Change子程序?Worksheet_CalcalculateSheet2

Pᴇʜ*_*Pᴇʜ 2

您可以Application.Run像这样使用 \xe2\x80\xa6

\n\n
Application.Run "Sheet1.Worksheet_Change", Range("A1")\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,Sheet1此处是工作表的 VBA 名称,而不是选项卡上的名称。可以在工作表的属性窗口(在 VB 编辑器中)更改 VBA 名称。

\n\n
\n\n

或者将代码移动Worksheet_Change到模块中,例如:

\n\n
Public Sub MySpecificWorksheet_Change(ByVal Target As Range)\n    ...\nEnd Sub\n
Run Code Online (Sandbox Code Playgroud)\n\n

Worksheet_Change并从和 中调用它Worksheet_Calculate

\n\n
Private Sub Worksheet_Change(ByVal Target As Range)\n    MySpecificWorksheet_Change(ByVal Target As Range)\nEnd Sub\n\nPrivate Sub Worksheet_Calculate()\n    MySpecificWorksheet_Change(ByVal Target As Range)\nEnd Sub\n
Run Code Online (Sandbox Code Playgroud)\n