Excel错误1004"无法获取WorksheetFunction类的属性"出现不一致

Nei*_*eil 18 excel vba excel-vba excel-2010

我在电子表格中有一个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
Run Code Online (Sandbox Code Playgroud)

其他细节是:

  • Excel版本:2010

  • 正在打开的文件驻留在我的C:驱动器本地; 我的宏位于网络上的电子表格中

  • 这两个文件的文件格式是.xls(即Excel 2003) - 我没有更改此选项的选项

  • Windows 7(不是我认为它会相关)

我已经尝试过的两点是:

  • 替换不同的工作表函数(例如Min(currentCell)),这也会导致同样的问题

  • 打开文件似乎已经停止了这个问题 - 我想知道是否有某种方式可以打开正在打开的工作簿(而不是我的宏工作簿中的宏),这是干扰的.但即使这是原因,我也不确定如何解决它!

有任何想法吗?

And*_*lla 24

当传递给工作表函数的任何参数的类型不正确或根本没有意义时,通常会发生此错误.

例如,当我WorksheetFunction.Asin使用大于1的参数调用时,我遇到了这个问题.在你的情况下,我猜currentCell.Value是一个非数字值,或者不是根据你所在地区的数字设置.

是的,错误消息确实是错误的.