Du schreibst im Makro „On Error GoTo 0“. Mit Zeilennummern
(hier: 0) habe ich immer ein Problem. Ich habe die 0 durch
eine Zeilenmarke ersetzt: „… GoTo finis“ und vor dem EndSub
„finis:“ eingefügt. So klappt es.
Es klappt auch, wenn ich statt „On Error GoTo 0“ noch einmal
„On Error Resume Next“ schreibe.
Hallo Niclaus,
für mich bedeutet On Error Goto 0 daß danach der Debugger wieder wie gewohnt auf Fehler reagiert.
Mit On Error Resume next heble ich ihn aus, d.h. er ignoriert Fehler und geht zur nächsten Codezeile.
Jetzt ist es ja so wie ich im Beispiel vorgehe vorprogrammiert daß Collection.Add einen Fehler produziert wenn ein schon vorhandener Wert, also ein Doppelter auftaucht.
Deshalb während des Einlesens der Collection On Error Resume next.
Danach dann wieder On Error Goto 0, denn ich will ja mitkriegen ob ein Fehler stattfindet.
Einfach in jeden Code On Error Resume Next einbauen ist sehr trügerisch, das überdeckt Codelogikfehler.
Und wenn nun ein Fehler auftritt und der Debugger sich meldet so ist daß für dich, für Thomas *gg*, für mich okay, dann kann man den Code verbessern.
Aber wenn Fremde den Code, die Mappe, benutzen die noch nie den VB-Editor sahen geht das nicht.
Dann muß man eine Fehlerbehandlungsroutine einbauen.
Google mal nach „Errorhandler“, so nennen viele diese Routine.
Diese Routine bringt meist nur eine MsgBox mit der mehr oder minder genauen Angabe warum etwas falsch läuft und was zu tun ist.
Man kann sogar rauskriegen in welcher Codezeile der Fehler geschah,
schau mal nach Err.Number, Err.Raise, Err.Description usw.
Aber ich mache diesen, an sich sehr nötigen Aufwand, nur wenn es der Gesamtcode rechtfertigt, nicht hier für Kleincodes.
Gruß
Reinhard