Ich bin der Überzeugung, dass die VBA-IDE kein ordnungsgemäßes Brechen bei Fehlern zulässt. Ich stellte eine Frage, wie man Laufzeitfehler hier identifizieren:Wie verwende ich On Error GoTo?
Die Lösung/Abhilfe scheint zu sein On Error GoTo ErrorHandler
oder ähnlich zu verwenden. Ich versuche, diese Arbeit zu machen, habe aber nicht viel Erfolg gehabt.
Nach Microsoft On Error GoTo
werden Sie an den angegebenen Code der Region gesendet, wenn ein Laufzeitfehler auftritt (https://msdn.microsoft.com/en-us/library/5hsw66as.aspx). Basierend auf meiner Erfahrung ist das nicht die ganze Geschichte. In dieser Frage geht es darum, wie diese Lösung tatsächlich funktioniert.
So habe ich die folgende Funktion:
Function generateTimeseries() As Variant
On Error GoTo ErrorHandler
Dim currentArray As Range
currentArray = Selection.Range ' this doesn't work - I don't care why
generateTimeseries = currentArray.Rows
Return
ErrorHandler:
Debug.Assert False
Resume ' break here if you want to catch errors
End Function
Diese Funktion tritt nie den ErrorHandler
Code. Statt dessen fällt es auf Selection.Range
, wobei die Funktion einfach #VALUE
zurückgibt. Es ist mir eigentlich egal, warum das kaputt ist, ich möchte nur wissen, wie ich die IDE dazu bringen kann, mir zu sagen, dass sie tatsächlich in dieser Zeile umgefallen ist, ohne dass ich manuell durch den Code gesprungen bin.
Griff „Mit dieser Funktion nie tritt der Fehlerbehandler-Code“: Kann dies nicht reproduzieren. Für mich gibt es den ErrorHandler-Code ein. Zwei Fehler: 1. Da 'currentArray' ein Objekt ist, muss es über' Set' gesetzt werden: 'Set currentArray = Selection'. 2. "Auswahl" kann ein "Bereich" sein, aber wenn dies der Fall ist, benötigt seine Methode "Bereich" Parameter. Und was soll "Return" in diesem Zusammenhang tun? –
@AxelRichter Ich habe das Problem gefunden. Siehe meine gepostete Antwort. – arman