0

我有模型代码:

Dim a(1 To 100) As Integer
Function func1(i As Integer)
    a(Application.Caller.Row) = i
    Debug.Print "func1: " & Application.Caller.Row & " - " & i
    func1 = "value"
End Function
Function func2(r As Range)
    func2 = "other"
    If (a(Application.Caller.Row) > 50) Then
       func2 = "other"
    Else
       func2 = "first"
    End If

   Debug.Print "func2: " & Application.Caller.Row & " - " & a(Application.Caller.Row)
End Function

和电子表格:

col A col B Col C
51 =func1(A1) =func2(B1)
9 =func1(A2) =func2(B2)
8 =func1(A3) =func2(B3)

图片

如果我使用 Col CI 对表进行排序,则执行以下操作:

func1: 3 - 8
func2: 3 - 8
func1: 2 - 9
func2: 2 - 9
func2: 1 - 8 <-- func2 在 func1 之前调用,在这种情况下提供不正确的值..
func1: 1 - 51

如果我计算工作表,我仍然会得到相同的序列:

func1: 3 - 8
func2: 3 - 8
func1: 2 - 9
func2: 2 - 9
func2: 1 - 51 <-- func2 在 func1 之前调用
func1: 1 - 51

Excel 2010 32 位(sp 最新)Windows 7 64 位

4

1 回答 1

0

目前,C 列实际上是 func2(func1(A))。作为一个简单的修复,您可以定义 func3() = funct2(func1()),这将消除 C 对 B 的依赖?

于 2013-06-25T12:09:31.813 回答