这可能是非常基本的,但我已经尝试了很多东西而且总是给出错误。
基本上我要做的是每次在Excel中更改单元格时运行一个过程。所以我使用Sub Worksheet_Change(ByVal Target As Range)。 一切都运作良好,但在这个程序中,我多次调用另一个子程序。
我想在此过程中重用'Target'值,但由于某种原因,我找不到如何做到这一点。我尝试将'Public rTarget As Range'放在程序开头并执行'rTarget = Target'。但是当我调用子程序时,rTarget保持为空。
如何使这项工作? 我现在将Target作为变量之一添加到子程序中,但这看起来很愚蠢。
谢谢!
答案 0 :(得分:2)
Private Sub Worksheet_Change(ByVal Target As Range)
MySub Target
End Sub
Sub MySub(ByVal Target As Range)
' Your sub code goes here and can work with the Target Range from the Worksheet_Change Event
End Sub
答案 1 :(得分:0)
将Target作为变量传递是你应该如何做到的。您希望将变量保持在最严格的范围内,并将它们作为参数传递是最严格的。
如果您将变量传递给同一模块中的一堆不同过程,则拥有模块级变量可能是有意义的。看起来像这样
Private mrTarget As Range
Private Sub Worksheet_Change(ByVal Target As Range)
Set mrTarget = Target
MySub
End Sub
Private Sub MySub()
Debug.Print mrTarget.Address
End Sub
根据您的问题,它只是一个被重复调用的子。在这种情况下,我会坚持将其作为一个论点。