我在电子表格中有一个 VBA 函数,该函数对在我的宏的早期阶段打开的另一个电子表格进行操作。该宏过去可以正常工作,但最近在运行时开始导致1004错误(“无法获取 WorksheetFunction 类的 RoundDown 属性”)。
我相信我理解错误是由什么引起的(运行 RoundDown 的问题),但我不明白为什么它会在我的宏中被触发,奇怪的是当我进入调试模式并单步执行 VBE 中的代码时错误不会再次发生(尽管没有明显改变)。
有没有人对这种不一致发生的错误有类似的经历,并且知道我可以做些什么来解决它?
我相当精通 VBA/Excel,但任何有关进一步诊断步骤的建议将不胜感激。我想知道打开的电子表格是否有问题没有准备好,但我看不出如何。
代码在这里。错误发生在标有注释的行上。
Public Function GetDatesA(sWorkbookname As String, sSheetname As String, sCell As String) As Variant
Dim vDateList() As Variant
Dim currentCell As Range
Dim n As Long
Set currentCell = Workbooks(sWorkbookname).Worksheets(sSheetname).Range(sCell)
n = 0
Do
If Trim(currentCell.Value) = "" Then
Exit Do
Else
ReDim Preserve vDateList(0 To 1, 0 To n)
vDateList(0, n) = WorksheetFunction.RoundDown(currentCell.Value, 0) 'error occcurs on this line
vDateList(1, n) = currentCell.Column
'Debug.Print currentCell.Value
End If
Set currentCell = currentCell.Offset(0, 1)
n = n + 1
Loop While currentCell.Column < XL_LAST_COLUMN
GetDatesA = vDateList
End Function
其他细节是:
Excel版本:2010
正在打开的文件本地驻留在我的 C: 驱动器上;我的宏在网络上的电子表格中
这两个文件的文件格式都是 .xls(即 Excel 2003)- 我没有更改此选项的选项
Windows 7(不是我认为它是相关的)
我已经尝试过的两点是:
替换不同的工作表函数(例如 Min(currentCell)),这也会导致同样的问题
打开文件似乎已经解决了这个问题 - 我想知道是否有某种方式正在打开的工作簿(而不是我的带有宏的主工作簿)没有启用宏,这会造成干扰。但即使这是原因,我也不知道如何解决它!
有任何想法吗?