附加代码用作目录构建器。根据函数所在的行,它会从后续工作表中提取某些单元格。
Asset Location Model
__________________________________________________________
Freezer Kitchen Freezerator 5000 (from worksheet 2)
Television Den Panasung 55" (from worksheet 3, etc.)
在“升级”之前,该功能正常运行。现在,如果我编辑销售,它可以工作,但如果我在同一工作表(任何地方,而不仅仅是“特殊”单元格)中复制单元格,单元格会闪烁并闪烁很多秒然后解决。有时它失败并出现溢出错误(如果我没记错的话,今天它没有这样做。)将单元格从一个工作表复制到另一个工作表只是没有这样的延迟。
如果我注释掉Application.Volatile行,延迟会消失,但函数什么也不做。
代码:
'Return values in subsequent worksheets based on row that the function
'is located on. Usage in this particular instance is a TOC
'Num = number of rows to offset, based on starting position of the TOC
'and skipping any worksheets not to be included in the TOC
'srow and scol is the target cell on the following worksheets
Function GetSpot(num, srow, scol)
Application.Volatile
If num > (ThisWorkbook.Worksheets.Count) Then
GetSpot = " "
Else
GetSpot = ThisWorkbook.Worksheets(num).Cells(srow, scol).Value
End If
If GetSpot = 0 Then GetSpot = " "
End Function
有什么想法吗?
提前致谢。
答案 0 :(得分:0)
您遇到的问题是Office 2013中与工作表中用户定义的函数使用相关的错误。我们向微软报告了这一情况,并且被告知它不会成为修复程序版本的一部分,因为只有3个人报告了它。
如果工作表中有用户定义的函数,并且执行复制/粘贴或插入行等操作,则工作表需要花费很长时间才能完成计算。只要您选择了marching ants
(缺少更好的术语)并且用户定义函数的工作表计算,就会发生这种情况。
这不是你的功能,它是Office 2013.这是一个快速复制问题的方法:
Module
将以下VBA粘贴到模块中
Function TimesTwo(ver)
TimesTwo = ver * 2
End Function
=INT(RAND()*8)
粘贴到单元格A1
D1:F100
范围内,粘贴公式=TimesTwo($A$1)
结果是计算需要很长时间才能完成,这可以在status bar
中看到。
除了使用native Excel functions, if available
或使用工作簿Calculation
设置为Manual
之外,没有其他解决方法。也就是说,在手动调用之前禁用工作表的计算。