У меня есть функция VBA в электронной таблице, которая работает с другой электронной таблицей, которая открывается на более ранней стадии моего макроса. Макрос, используемый для работы отлично, но только недавно начал вызывать ошибку 1004 ( "Невозможно получить свойство RoundDown класса WorksheetFunction" ) при запуске.
Я считаю, что понимаю, что вызвала ошибка (проблема с запуском RoundDown), но я не могу понять, почему она запускается в моем макросе, а нечетная часть - это то, что когда я перехожу в режим Debug и выполняю код в 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)), и это также вызывает ту же проблему
-
Наличие открытого файла уже, кажется, останавливает проблему - интересно, есть ли способ, которым открывающаяся рабочая книга (а не моя основная рабочая тетрадь с макросом в ней) не включена для макросов, и это мешает. Но даже если это причина, я не уверен, как обойти это!
Любые идеи?