У меня есть функция 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)) и это также вызывает ту же проблему
Открытие файла уже, кажется, останавливает проблему - интересно, есть ли какой-то способ, чтобы открываемая книга (а не моя основная книга с макросом в нем) макросы не включены и это мешает. Но даже если это причина, я не уверен, как это обойти!
Есть идеи?