Ich habe eine VBA-Funktion innerhalb einer Tabelle, die auf einer anderen Tabelle arbeitet, die in einer früheren Phase meines Makros geöffnet wird. Das Makro, das verwendet wurde, um ordnungsgemäß zu funktionieren, hat jedoch erst kürzlich verursacht Fehler ("Kann nicht RoundDown-Eigenschaft der WorksheetFunction-Klasse"), wenn es ausgeführt wird.Excel-Fehler 1004 "Unable to get .... Eigenschaft der WorksheetFunction-Klasse" erscheint inkonsistent
Ich glaube, ich verstehe, was der Fehler verursacht werden würde (ein Problem mit RoundDown), aber ich kann nicht sehen, warum es in meinem Makro ausgelöst wird und der seltsame Teil ist, wenn ich in den Debug-Modus gehe und durch den Code in der VBE tritt der Fehler nicht auf (obwohl sich nichts offensichtlich ändert).
Hat jemand eine ähnliche Erfahrung dieser Art von Fehler inkonsistent und weiß, was ich tun könnte, um es zu lösen?
Ich bin vernünftig VBA/Excel-savvy, aber alle Vorschläge für weitere Schritte zur Diagnose wäre willkommen. Ich frage mich, ob es ein Problem mit der geöffneten Tabelle gibt, die nicht bereit ist, aber ich kann nicht sehen, wie.
Der Code ist hier. Der Fehler tritt in der Zeile auf, die mit einem Kommentar markiert ist.
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
Weitere Details sind:
Excel Version: 2010
Datei befindet sich lokal auf meinem C geöffnet wird: fahren; in einer Tabelle auf dem Netzwerk mein Makro ist
Dateiformat für beiden Dateien .xls (dh Excel 2003) ist - ich habe nicht die Möglichkeit der Veränderung dieses
Windows 7 (nicht, dass ich denke, es wäre relevant sein)
Zwei Punkte, die ich versucht habe bereits sind:
Stellvertreter eine andere Tabellenfunktion (zB Min (Current)) und th at verursacht auch das gleiche Problem
Mit der Datei geöffnet scheint bereits das Problem zu stoppen - ich frage mich, ob es eine Möglichkeit gibt, dass die Arbeitsmappe, die geöffnet wird (anstatt meine Hauptarbeitsmappe mit dem Makro darin) nicht ist aktiviert für Makros und das ist störend. Aber selbst wenn das der Grund ist, bin ich mir nicht sicher, wie ich es umgehen soll!
Irgendwelche Ideen?
Wenn Sie einfügen 'Debug.Print currentCell.Value' kurz vor' vDateList (0, n) = WorksheetFunction.RoundDown (currentCell.Value, 0) ', was zu tun du erhältst? Ist es eine gültige Nummer? –
Ändern Sie auch 'WorksheetFunction.RoundDown (currentCell.Value, 0)' in 'Application.WorksheetFunction.RoundDown (currentCell.Value, 0)' –
Vielen Dank! Das habe ich mir vorgenommen. Ich bekomme eine Liste von Daten (effektiv Zahlen - sie zeigen als Datum, es sei denn, ich multipliziere mit 1, um die zugrunde liegende Excel-Nummer zu erhalten, die dem Datum entspricht). Diese gehen alle gut durch, wenn ich den Code durchlaufe, aber nicht, wenn ich ihn selbst laufen lasse (wenn er die exakt gleichen Werte zurückzieht), also ist es wahrscheinlich eher etwas an WorksheetFunction als an meinen schlechten Daten. Ich arbeite jetzt an der Verwendung von "On Error ..." - es scheint, Fehler nur beim ersten Mal, so eine Kludis könnte zuerst einen beliebigen WorksheetFunction-Aufruf mit On Resume Next und dann wieder ausschalten. – Neil