Błąd Excel 1004 „Nie można uzyskać… właściwości klasy WorksheetFunction” pojawia się niespójnie
Mam funkcję VBA w arkuszu kalkulacyjnym, który działa na innym arkuszu kalkulacyjnym, który jest otwierany na wcześniejszym etapie mojego makra. Makro działało dobrze, ale ostatnio zaczęło powodować1004 błąd („Nie można pobrać właściwości RoundDown klasy WorksheetFunction”) gdy biegnie.
Sądzę, że rozumiem, co spowodowałby błąd (problem z uruchomieniem RoundDown), ale nie rozumiem, dlaczego jest uruchamiany w moim makrze, a dziwne jest to, że kiedy przechodzę do trybu debugowania i przechodzę przez kod w VBE, błąd nie powtarza się (mimo że nic się nie zmienia).
Czy ktoś ma podobne doświadczenia z tego rodzaju błędami występującymi niespójnie i wie, co mogę zrobić, aby go rozwiązać?
Mam rozsądne doświadczenie w zakresie VBA / Excel, ale wszelkie sugestie dotyczące dalszych kroków w celu zdiagnozowania tego byłyby mile widziane. Zastanawiam się, czy istnieje problem z otwartym arkuszem kalkulacyjnym, który nie jest gotowy, ale nie widzę, jak.
Kod jest tutaj. Błąd występuje w linii oznaczonej komentarzem.
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
Inne szczegóły to:
Wersja Excel: 2010
Otwierany plik znajduje się lokalnie na moim dysku C:; moje makro znajduje się w arkuszu kalkulacyjnym w sieci
Format pliku dla obu plików to .xls (np. Excel 2003) - nie mam możliwości zmiany tego pliku
Windows 7 (nie, że myślę, że byłoby to istotne)
Dwa punkty, które już wypróbowałem to:
Zastąp inną funkcję arkusza (np. Min (currentCell)), co również powoduje ten sam problem
Otwarcie pliku już wydaje się zatrzymywać problem - zastanawiam się, czy jest jakiś sposób, aby otwierany skoroszyt (a nie mój główny skoroszyt z makro) nie był włączony dla makr i to przeszkadza. Ale nawet jeśli jest to przyczyna, nie jestem pewien, jak to obejść!
Jakieś pomysły?