Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1620to1624
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

Feststellen, ob ein Fehler aufgetreten ist

Feststellen, ob ein Fehler aufgetreten ist
29.04.2018 21:52:50
Barbaraa
Hallo
kann man feststellen, ob nach
On Error Resume Next
ein Fehler gekommen ist?
In folgendem Beispiel ist die .Find-Methode in einer Zeile eingebaut.
Damit kann ich eine erfolglose Suche nicht abfangen, ausser mit der Fehlerbehandlung.
Sub test()
Dim lFundzeile As Long
Cells(4, 3) = "Hund"
Cells(5, 3) = "Katze"
On Error Resume Next
lFundzeile = Range(Cells(4, 3), Cells(5, 3)).Find("Fisch").Row
'War hier nun ein Fehler oder nicht?
On Error GoTo 0                     'Fehlerbehandlung wieder ausschalten
MsgBox "Hurra, gefunden!"
End Sub
LG, Barbara

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: set ...
29.04.2018 21:57:04
Fennek
Hallo,
versuche es einmal so:

Sub test()
Dim lFundzeile As range 'Long 
mfg
AW: Feststellen, ob ein Fehler aufgetreten ist
29.04.2018 22:10:08
KlausF
Hallo Barbara
Sub test()
Dim lFundzeile As Long
Cells(4, 3) = "Hund"
Cells(5, 3) = "Katze"
On Error GoTo Fehler
lFundzeile = Range(Cells(4, 3), Cells(5, 3)).Find("Fisch").Row
MsgBox "Hurra, gefunden!"
Exit Sub
Fehler:
MsgBox "Nicht gefunden"
End Sub
Gruß
Klaus
AW: Feststellen, ob ein Fehler aufgetreten ist
29.04.2018 22:23:27
niclaus
Hallo Barbara
Wenn Du es so machst z. B.:
Sub test()
Dim lFundzeile As Long
Cells(4, 3) = "Hund"
Cells(5, 3) = "Katze"
On Error GoTo fehler1
lFundzeile = Range(Cells(4, 3), Cells(5, 3)).Find("Fisch").Row
MsgBox "Hurra, gefunden!"
Exit Sub
fehler1:
MsgBox "Hurra ein Fehler mit der Nummer " & Err.Number
End Sub

Grüsse Niclaus
Anzeige
AW: Feststellen, ob ein Fehler aufgetreten ist
29.04.2018 22:27:03
niclaus
Wenn Klaus und Niclaus arbeiten kommen sie zum gleichen Ergebnis ;-))
Niclaus
AW: Feststellen, ob ein Fehler aufgetreten ist
29.04.2018 22:28:08
Daniel
Hi
nach einem On Error Resume Next kannst du mit If Err 0 ermitteln, ob ein Fehler aufgetreten ist.
Err ist eine Systemvariable und enthält nach Auftreten eines Fehlers die Fehlernummer.
Allerdings sollte man Fehlersprünge oder das On Error Resume Next nur dann einsetzen, wenn es keine brauchbare Alterniative gibt.
In deinem Fall gibt es die (wurde dir ja schon gezeigt), daher solltst du die auch verwenden.
Gruß Daniel
AW: Feststellen, ob ein Fehler aufgetreten ist
29.04.2018 23:21:44
Barbaraa
Hallo
danke für Eure Antworten.
Daniels Lösung ist die proktikabelste. Die Systemvariable "err" kannte ich noch nicht.
Danke Daniel.
Auch den anderen sei Dank, auch wenn ich diese Lösungen nicht einsetzen kann, da damit lFundzeile nicht ermittelt wird, die ich später nochmals brauche. Das hätte ich dazuschreiben sollen.
LG, Barbara
Anzeige
AW: Feststellen, ob ein Fehler aufgetreten ist
30.04.2018 06:58:27
Michael
Ich erlaube mir die Anmerkung, dass ich schon oft das Problem hatte, dass Err.Number nach einem 'On Error GoTo 0' doch gelöscht bzw. auf 0 war, obwohl innerhalb der Fehlerbehandlung ein Fehler aufgetreten war. Laut Definition soll ja Err.Number erst mit 'On Error Resume Next' auf 0 gesetzt werden, aber aus mir unbekannten Gründen passiert es manchmal nach einem 'On Error GoTo 0' auch.
Ich frage den Fehler deshalb immer so ab:
On Error Resume Next
blafunktion() 'die Routine welche den Fehler werfen könnte
errno = Err.Number
On Error GoTo 0
if errno  0 then
'Fehlerbehandlung
end if
Möglicherweise ist das Excel-versionsabhängig... wie gesagt, ich weiß es nicht, aber da ich immer wieder damit Probleme hatte, löse ich die Fehlerbehandlung inzwischen immer so.
Viele Grüße, Michael
PS: die Default-Eigenschaft von 'Err' ist 'Err.Number'
Anzeige
AW: Feststellen, ob ein Fehler aufgetreten ist
30.04.2018 10:06:22
Werner
Hallo Barbara,
und warum sollte das mit z.B. dieser Version nicht funktionieren?
Sub test()
Dim lFundzeile As Long, raFund As Range
Cells(4, 3) = "Hund"
Cells(5, 3) = "Katze"
Set raFund = Range(Cells(4, 3), Cells(5, 3)).Find("Fisch")
If Not raFund Is Nothing Then
lFundzeile = raFund.Row
MsgBox lFundzeile
Else
MsgBox "Begriff nicht gefunden."
End If
Set raFund = Nothing
End Sub
Gruß Werner
AW: Feststellen, ob ein Fehler aufgetreten ist
03.05.2018 22:31:21
Barbaraa
Hallo Werner,
das ist natürlich eine gründliche Methode, erst ein Fund-Range zu bilden und dieses dann unter die Lupe zu nehmen.
Ausgangslage in meinem Fall war, dass in der konkreten Zeile mehrere .find vorkommen (war eine sehr verschachtelte Zeile). Ist nicht ein guter Stil, wie vielerorts zu lesen ist, und mittlerweile bin auch ich davon überzeugt, insbesondere bei der Fehlersuche.
Danke für Eure Mithilfe.
LGB
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
04.05.2018 19:22:09
Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige