Ошибка Excel 1004 «Невозможно получить… свойство класса WorksheetFunction», появляющаяся непоследовательно

У меня есть функция VBA в электронной таблице, которая работает с другой электронной таблицей, открытой на более ранней стадии моего макроса. Макрос работал нормально, но совсем недавно начал вызывать ошибку 1004(«Невозможно получить свойство RoundDown класса WorksheetFunction») при запуске.

Кажется, я понимаю, чем может быть вызвана ошибка (проблема с запуском 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)) и это также вызывает ту же проблему

  • Открытие файла уже, кажется, останавливает проблему - интересно, есть ли какой-то способ, чтобы открываемая книга (а не моя основная книга с макросом в нем) макросы не включены и это мешает. Но даже если это причина, я не уверен, как это обойти!

Есть идеи?

18
задан Community 9 July 2018 в 19:34
поделиться