1

这可能是非常基本的,但是我尝试了很多东西并且总是给出错误。

基本上我想要做的是每次在 Excel 中更改单元格时运行一个过程。所以我使用 Sub Worksheet_Change(ByVal Target As Range)。一切正常,但在这个过程中,我多次调用另一个子过程。

我想在此过程中重用“目标”值,但由于某种原因,我找不到如何去做。我尝试将“Public rTarget As Range”放置在程序开始时并执行“rTarget = Target”。但是当我调用 sub 过程时 rTarget 保持为空。

我该如何进行这项工作?我现在将 Target 作为变量之一添加到子例程中,但这看起来很愚蠢。

谢谢!

4

2 回答 2

3
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
于 2013-04-25T14:46:57.147 回答
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

根据您的问题,它只是一个被重复调用的子。在这种情况下,我会坚持将其作为参数传递。

于 2013-04-26T13:10:52.627 回答