如何将目标传递给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
),导致你在上面的代码中有问题。