Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ein Problem zwe Lösungen

Ein Problem zwe Lösungen
04.05.2020 11:42:02
Steve
Moin Leute,
ich habe gerade festgestellt, das ich ein und dassselbe Problem an zwei verschiedenen Stellen auf unterschiedliche Art und Weise gelöst habe. Nun würde ich gerne wissen welche der Lösungen die sinnvollere ist und warum.
Das Problem:
Ich habe ein Dropdown erstellt zum Auswählen aus einer Liste. Mit einem Button wird dann ein Makro durchgeführt. (bei dem einen Wechsel zum Sheet, bei dem anderen Löschen)
Ich bekam immer eine Fehlermeldung, wenn das Dropdown leer ist, aber dennoch das Button verwendet wird.
Das Problem habe ich bei dem einen gelöst mit: On Error Resume Next
bei dem anderen mit: If Range("N_Auswahl1") = "" Then Exit Sub
Ich nehme an die zweite Lösung ist die bessere, aber mir fällt kein Argument ein warum das so ist. Kann mir Bitte da vielleicht jemand etwas zu sagen?
Sollte es was gut verständliches zum lesen geben, nehme ich das auch gerne.
Vielen Dank und liebe Grüße
Steve

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ein Problem zwe Lösungen
04.05.2020 11:46:20
Regina
Hallo Steve,
die 2. Lösung ist auf jeden Fall vorzuziehen, weil der Fehler grundsätzlich vermieden wird.
Die 1. "Lösung" führt dazu, dass alle Laufzeitfehler ignoriert werden und einfach der Code weiter fortgesetzt wird. Das kann zu unschönen Fehlerbildern führen, ohne dass man je weine Fehlermeldung sieht.
Gruß Regina
Danke dir.
04.05.2020 12:55:15
Steve
Hallo Regina,
danke dir, das hat geholfen. Habe noch ein wenig über On Error Resume next / 0 nachgelesen.
Hab ich das so richtig verstanden:
On Error gilt nur für die nächste Zeile und nicht wie z.B. Application.ScreenUpdating für den Bereich zwischen False und True. (Sofern man dran denkt beides zu verwenden)
Wenn ich On Error verwende, dann wird der Fehler zwar unterdrückt, aber sollte ich mal gezielt auf Fehlersuche gehen, dann kann es passieren, das ich diesen nicht finde, weil er ja unterdrückt wird.
Was wiederum bedeutet, das ich zunächst im ganzen Code On Error auskommentieren müsste.
So richtig?
Liebe Grüße
Steve
Anzeige
AW: Danke dir.
04.05.2020 13:10:54
Regina
Hi Steve nicht ganz:
On Error Resume Next unterdrückt alle Fahler, und zwar in der gesamten Prozedur AB der Zeile über der On error steht. In dem folgenden Code werden alle Laufzeitfehler mit einer eigenen Fehlermeldung abgefangen, wobei die Fehler 11 und 13 hier mal exemplarisch eine eigene Meldung bekommen. In der Fehlerbehandlung kann man dann mit Resume die Zeile, die den Fehler verursacht hat, wiederholen. Mit Resume Next (was hier keinen Sinn ergibt) kann man die Zeile, die den Fehler verursacht überspringen.
Wichtig: Das Exit Sub vor der Fehlerbehandlung setzen, ansonsten wird die Fehlerbehandlung auch abgearbeitet, wenn gar kein Fehler aufläuft.
Public Sub Test_Laufzeitfehler()
On Error GoTo fehler
Dim dbl_wert1 As Double
Dim dbl_wert2 As Double
Dim dbl_ergebnis As Double
dbl_wert1 = InputBox("Wert1:")
dbl_wert2 = InputBox("Wert2:")
dbl_ergebnis = dbl_wert1 / dbl_wert2
MsgBox dbl_ergebnis
Exit Sub
fehler:
Select Case Err.Number
Case 11    ' Division durch 0
MsgBox "Der zweite Wert darf nicht 0 sein! Er wird auf 1 gesetzt!"
dbl_wert2 = 1
Resume
Case 13    ' Datentypen unverträglich
MsgBox "Geben Sie nur Zahlen ein!"
Resume
Case Else  ' bei allen anderen Fehlern werden Nummer und Beschreibung
' ausgegeben
MsgBox Err.Number & vbNewLine & Err.Description
End Select
End Sub
Gruß Regina
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige