如何将目标传递给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
我建议使用全局变量:
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
注意:全局变量放在所有代码的顶部,在任何其他Function或Sub之外。即使在宏的单个作用域之外,全局变量也保留在堆栈中。这就是为什么您可以将全局变量从宏传递给另一个宏的原因。另一方面,现在您将无法执行操作(出现“对象必填错误”),因为该Target
对象一旦超出其范围Worksheet_Change
,就会从堆栈中删除,从而恢复为默认值(Nothing
),从而导致出现问题在上面的代码中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句