如何将目标传递给Excel事件中的另一个宏?为了优雅的目的,我想使用以下结构,现在不起作用。
Private Sub Worksheet_Change(ByVal Target As Range)
GoToAnotherMacro(Target)
End Sub
Sub GoToAnotherMacro(Target)
'here my code where I can use Target i.e:
MsgBox "value: " & Target.Value
End Sub
答案 0 :(得分:2)
我建议使用全局变量:
1)定义一个全局变量:
Dim RangeSupp As Range
2)在您的过程中,将本地Target传递给您的全局变量
Private Sub Worksheet_Change(ByVal Target As Range)
Set RangeSupp = Target
GoToAnotherMacro RangeSupp
End Sub
3)在其他宏中享受你的目标
Sub GoToAnotherMacro(Target As Range)
MsgBox Target.Value
End Sub
注意:全局变量放在所有代码之上,外部任何其他函数或Sub。即使在宏的单个范围之外,全局变量也保留在堆栈中。这就是为什么你能够将一个全局变量从宏传递到另一个的原因。另一方面,现在你无法(你得到"对象必需的错误"),因为Target
对象一旦超出Worksheet_Change
的范围,就会从堆栈,使其恢复到默认值(Nothing
),导致上述代码中出现问题。