如何将目标传递给Excel事件中的另一个macros?

如何将目标传递给Excel事件中的另一个macros? 只是为了优雅的目的,我想使用下面的结构,现在不工作。

Private Sub Worksheet_Change(ByVal Target As Range) GoToAnotherMacro(Target) End Sub
Sub GoToAnotherMacro(Target) 'here my code where I can use Target ie: MsgBox "value: " & Target.Value End Sub

我会build议使用一个全局variables:

1)定义一个全局variables:

 Dim RangeSupp As Range 

2)在你的程序中,将本地目标传递给你的全局variables

 Private Sub Worksheet_Change(ByVal Target As Range) Set RangeSupp = Target GoToAnotherMacro RangeSupp End Sub 

3)在你的其他macros中享受你的目标

 Sub GoToAnotherMacro(Target As Range) MsgBox Target.Value End Sub 

注意:全局variables放在所有代码之上, 其他Function或Sub之外。 全局variables保存在堆栈中,即使在macros的单个范围之外。 这就是为什么你能够将一个macros的全局variables传递给另一个macros的原因。 另一方面,现在你不能够(你得到“对象所需的错误”),因为Target对象,一旦超出其范围Worksheet_Change ,从堆栈中删除,所以它回到其默认值( Nothing ),导致你在上面的代码中有问题。