Das Archiv des Excel-Forums

Verstehe "On Error" nicht

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Verstehe "On Error" nicht
von: Franz W.

Geschrieben am: 09.10.2003 08:41:14

Guten Morgen Fachleute,

ich habe in einer UF den Kalenderersatz von Hajo's Site (vielen Dank an Hajo dafür!). Damit wird aus drei Comboboxen ein Datum zusammengesetzt:

Dim AuszDat as Date
AuszDat = CDate(.cmbTagAlt & "." & .cmbMonatAlt & "." & .cmbJahrAlt)

Wird nun ein ungültiges Datum eingegeben (z.b. 31.02.2003) kommt der Debugger mit der MEldung: Typen unverträglich.

Um das abzufangen, habe ich eine On Error-Anweisung eingebaut:

With dlgKdCh
On Error GoTo errorhandler1
AuszDat = CDate(.cmbTagAlt & "." & .cmbMonatAlt & "." & .cmbJahrAlt)
Cells(rng.Row, 16) = AuszDat
On Error GoTo 0
GoTo weiter
End With
errorhandler1:
MsgBox "Ungültiges Datum ausgewählt!", vbCritical

Wenn nun ein jetzt ein ungültiges Datum eingegeben wird, kommt die Meldung "Ungültiges Datum ausgewählt!" und es geht wieder zurück zu UF. ABER NUR 1 MAL !!! Gibt der User noch ein Mal ein ungültiges Datum ein, GREIFT ON ERROR NICHT MEHR, sondern jetzt kommt der Debugger!!

Warum ist das so? Mache ich da was falsch? Kann man den Debugger irgendwie anders abfangen?

Für Eure Hilfe schon mal vielen Dank

Grüße
Franz
Bild


Betrifft: AW: Verstehe "On Error" nicht
von: Hajo_Zi
Geschrieben am: 09.10.2003 08:45:59

Hallo Franz

im Original kannst Du keinen 31.02.03 eingeben. Ich habe das jetzt Extra noch mal geprüft. Ich konnte mir eigentlich nicht vorstellen das ich so eine Datei hochlade.

Auf On Error sollte eigentlich im Programm verzichtet werden, da gibt es andere Mittel.



Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/



Bild


Betrifft: Warum sollte man auf On Error verzichten?
von: Michael Scheffler
Geschrieben am: 09.10.2003 08:48:03




Bild


Betrifft: AW: Warum sollte man auf On Error verzichten?
von: Hajo_Zi
Geschrieben am: 09.10.2003 08:54:25

Hallo Michael

ich finde es eine unsaubere Programmierung, wenn man in Programm auf einen Fehler laufen läst. Aber dies ist meine ganz persönliche Meinung.



Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/



Bild


Betrifft: AW: Warum sollte man auf On Error verzichten?
von: Michael Scheffler
Geschrieben am: 09.10.2003 12:55:26

Hallo Hajo,

klar ist es unsauber, wenn man vorher weiß, welche Fehler passieren, kann man das auch abfangen, z.B. Zahlen mit "IsNumeric".

Leider kennt man vorher nicht alle Fallstricke und kann für den Nutzer Servive betreiben - wie findest Du z.B. raus, ob eine bstimmte OLE-Anwendung installiert ist, da macht sich doch "On Error Resume" sehr gut und danach die Abfrage, ob ein Fehler auftrat oder nicht.

Und zudem gibt es Fehler, die keiner vorraussieht, wenn z.B. gewisse Daten fehlen. Aber Nepomuk hatte gestern die gleiche Ansicht, die er dann revidiert hat. Und da sage ich, ich schlage Euch für den Nobelpreis vor, Ihr seid die einzigen fehlefreien Programmierer auf der Welt:-) Falls Ihr nicht schon für Bill arbeitet, geht zu ihm, das würde die Computerwelt sehr bereichern.

Gruß

Micha


Bild


Betrifft: AW: Warum sollte man auf On Error verzichten?
von: Hajo_Zi
Geschrieben am: 09.10.2003 13:04:27

Hallo Michael

das will ich nun nicht behaupten das ich Fehlerfrei programmiere. Aber in dem Beispiel von Franz das er von meiner Homepag geladen hat ging es auch ohne on Error. Nachdem er mir per mail geschrieben hat was er an der Datei geändert haben möchte und wo die Datei noch Fehler hat. Habe ich sie korrigiert und auch eine Lösung ohne On error gefunden.

Franz wußte ja genau wodurch der Fehler ausgelöst wurde (31.02.03) und bei so einer Aufgabenstellung ist doch die on Error Methode das falsche.

Natürlich gibt es Sachen wo man nicht drum kommt. Aber es sollte nicht die Verfahrensweise aufkommen ach da habe ich ein Fehler, also schreibe ich mal schnell on Error ohne mich darum zu kümmern warum der Fehler auftritt.



Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/



Bild


Betrifft: Und jetzt perfekt!
von: Franz W.
Geschrieben am: 09.10.2003 13:35:53

Hallo Michael

ich kann nur sagen, das von Hajo überarbeitete Tool ist perfekt. Ich habe jetzt mal alles was mir eingefallen ist, vorwärts und rückwärts ausprobiert und es funktioniert tatsächlich so, dass kein Fehler mehr übrig bleibt.

Das soll natürlich kein Beitrag zur generellen Diskussion über On Error sein, die hat schon trotzdem ihre Berechtigung. Und auch will ich Deinen Hilfstipp noch durchspielen. Weiß ja nie, wozu ich's mal brauchen kann ;-))

Grüße
Franz


Bild


Betrifft: AW: Verstehe "On Error" nicht
von: Franz W.
Geschrieben am: 09.10.2003 08:49:36

Hallo Hajo,

oh, dann hab ich wohl durch meine Anpassungen da was unterschlagen, werd ich mir gleich noch mal anschauen.

Gibt es für mein On Error-Problem trotzdem eine Erklärung? Warum greift diese nur ein Mal und kein zweites Mal?

Grüße
Franz


Bild


Betrifft: AW: Verstehe "On Error" nicht
von: Michael Scheffler
Geschrieben am: 09.10.2003 08:52:33

Hallo Franz,

ich kenne den Code nicht, aber vor jede Error-Marke gehört ein "Exit Sub", sonst wird der Code ja trotzdem durchlaufen

Gruß

Micha


Bild


Betrifft: AW: Verstehe "On Error" nicht
von: Franz W.
Geschrieben am: 09.10.2003 09:09:42

Hallo Michael,

hier ein Teil aus meinem Code (ich hoffe ausreichen), der in einem normalen Modul steht:


Sub ...()
nochmal:
dlgKdCh.Show
If Result = False Then Exit Sub
sFind = Format(dlgKdCh.cmbMieterAlt.Value, "000")
If sFind = "" Then Exit Sub
Set rng = Columns(1).Find(what:=sFind, lookat:=xlWhole, LookIn:=xlValues)
Worksheets("Ablesungen").Unprotect
y = rng.Row
Worksheets("Ablesungen").Unprotect
With dlgKdCh
On Error GoTo errorhandler1
AuszDat = CDate(.cmbTagAlt & "." & .cmbMonatAlt & "." & .cmbJahrAlt)
Cells(rng.Row, 16) = AuszDat
GoTo weiter
End With
errorhandler1:
On Error GoTo 0
MsgBox "Ungültiges Datum ausgewählt!", vbCritical
dlgKdCh.MultiPage1.Value = 0   ' Wählt das erste Blatt aus
GoTo nochmal
End Sub


Aber auch so geschrieben...

On Error GoTo errorhandler1
AuszDat = CDate(.cmbTagAlt & "." & .cmbMonatAlt & "." & .cmbJahrAlt)
On Error GoTo 0

... ändert nichts.


Vielleicht kannst Du damit was anfangen

Grüße
Franz


Bild


Betrifft: AW: Verstehe "On Error" nicht
von: Michael Scheffler
Geschrieben am: 09.10.2003 09:49:17

Hallo Franz,


das hier ist schlicht gesagt Sch...:

End With
errorhandler1:
On Error GoTo 0
MsgBox "Ungültiges Datum ausgewählt!", vbCritical
dlgKdCh.MultiPage1.Value = 0 ' Wählt das erste Blatt aus
GoTo nochmal
.
.
.
End Sub


EIN GOTO ist in Ordnung, aber nicht meherere. Das "On Error..."-Konstrukt ist für Deinen Fall nicht das Richtige, da hat Hajo recht. Bei Dir reicht ein If-Konstrukt etc.


Eine Fehlerbehandlung sieht so aus:


Sub FehlerTest()
On Error GoTo Fehler
Dim doubTest As Double
doubTest = 1 / 0
Exit Sub
Fehler:
MsgBox Err.Description & " " & Err.Number
Err.Clear
End Sub



Bild


Betrifft: AW: Verstehe "On Error" nicht
von: Franz W.
Geschrieben am: 09.10.2003 10:40:42

Hallo Michael,

vielen Dank für Deine Mühe, ist ja interessant, was Du das rausfindest, werd mich mal reindenken. Und dann Deinen Ersatz testen. Muss nur jetzt mal weg. Ich gib Dir aber schon noch Bescheid.

Vielen Dank und Grüße
Franz


Bild


Betrifft: AW: Verstehe "On Error" nicht
von: Hajo_Zi
Geschrieben am: 09.10.2003 08:56:42

Hallo Franz

soweit ich mich erinnere muß der Fehler wieder zurück gesetzt werden.
Err.Clear



Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/



Bild


Betrifft: AW: Verstehe "On Error" nicht
von: Franz W.
Geschrieben am: 09.10.2003 09:03:51

Hallo Hajo,

habe in meinem Code zurückgesetzt mit dem, das ich bisher gelernt habe: On Error Goto 0. Hab jetzt auch Err.Clear versucht, bringt aber auch nix. Und eigentlich sollte der Fehler ja auch nicht gelöscht werden, er besteht ja nach nochmaliger Eingabe eines falschen Datums nach wie vor. Nur sieht er's irgendwie nicht mehr so...?

Grüße
Franz


Bild


Betrifft: AW: Verstehe "On Error" nicht
von: Hajo_Zi
Geschrieben am: 09.10.2003 09:12:16

Hallo Franz

warum verwendest Du nicht en Originalcode?? Dort gab es dieses Problem nicht.



Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/



Bild


Betrifft: AW: Verstehe "On Error" nicht
von: Franz W.
Geschrieben am: 09.10.2003 09:14:12

Hallo Hajo,

ja, da bin ich hiermit schon dran. Wollte nur grundsätzlich zum Lernen für die Zukunft auch gerne diese On Error-Geschichte durchschaut haben.

Grüße
Franz


 Bild