我有模型代码:
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 位