【发布时间】:2014-03-24 15:21:49
【问题描述】:
我使用的是 Excel 2007。我在 Excel VBA 模块中有以下功能:
Function test(Loc, Dis)
Dim StaRan As String
Dim EndRan As String
Application.Volatile
' Build the Start Range and End Range strings
StaRan = Loc.Offset(-Dis, 0).Address
EndRan = Loc.Offset(Dis, 0).Address
' Feed the range strings to Excel's Average function to get the answer
test = WorksheetFunction.Average(Range(StaRan & ":" & EndRan))
End Function
当插入 Excel 工作表时,test 函数使用距离 Dis 作为加/减行计数来偏移位置 Loc 以构建可用于计算平均值的范围。工作表设置为手动计算,因此在按下 F9 按钮之前不会更新。
在 Sheet1 中输入以下内容:
在单元格 A2:1
在单元格 A3:1
在单元格 A4:1
在单元格 B3:=test(A3,1)
如果您在按 F9 时查看放置函数的工作表 (Sheet1),则此函数有效(返回 1)。查看任何其他工作表(例如 Sheet2)时,按 F9 按钮重新计算。然后返回原始工作表(Sheet1)并查看test 返回的内容。它返回了#VALUE!。如果您在查看原始工作表 (Sheet1) 时再次按 F9,它会返回正确答案。
这是 Excel 错误吗?有没有办法解决这个问题?
【问题讨论】: