我有模型代码:
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
和电子表格:
A列B C列
51 =函数1(A1)=函数2(B1)
9=函数1(A2)=函数2(B2)
8=函数1(A3)=函数2(B3)
如果我使用Col C对表进行排序,我会得到以下执行结果:
func1: 3-8
func2: 3-8
func1: 2-9
func2: 2-9
func2: 1-8 <--在func1之前调用的func2,在本例中提供incorect值。
func1: 1- 51
如果我计算工作表,我仍然得到相同的序列:
func1: 3-8
func2: 3-8
func1: 2-9
func2: 2-9
func2: 1- 51 <--在func1之前调用的func2
func1: 1- 51
Excel 2010 32位(sp最新版本) Windows 7 64位
发布于 2013-06-25 20:09:32
此时,C列实际上是func2(func1(A))。作为一个简单的修复方法,您可以定义func3() = funct2(func1()),这将消除C对B的依赖?
https://stackoverflow.com/questions/17296825
复制相似问题