Live-Forum - Die aktuellen Beiträge
Datum
Titel
02.12.2024 13:15:39
02.12.2024 12:41:41
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender Navigationstipps
Inhaltsverzeichnis

Frage zu IsError

Frage zu IsError
25.05.2015 18:42:57
Georg Hoffmann

Liebe Excellenzen,
ich vergleiche 2 Tabellen. Dabei Suche ich nach einer ID die in einer bestimmten Spalte steht. WEnn diese nicht in der zweiten Tabelle gefunden wird dann läuft XL auf einen Fehler. Diesen Fehler benötige ich weil es danach unterschiedlich weitergehen soll.
Ich habe folgendes versucht:
...
If IsError(Sheets("Termine").Range("L2:L5000").Find(Sheets("TermineGestern").Cells(i, 12).Value, LookIn:=xlValues)) Then
GoTo Weiter
Else
x = Sheets("Termine").Range("l2:L5000").Find(Sheets("TermineGestern").Cells(i, 12).Value, LookIn:=xlValues).Row
End If
Weiter:
....
Leider erfolgt aber bei einem Fehler (nicht in beiden Blättern ist die ID vorhanden) kein Sprung zu "Weiter".
Warum ist das so und wie mache ich es besser?
LG Georg

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage zu IsError
25.05.2015 18:46:43
Sepp
Hallo Georg,
mit GoTo arbeitet man nicht, bzw. nur in Ausnahmesituationen (Fehlerbehandlung)
Dim rng As Range
Set rng = Sheets("Termine").Range("L2:L5000").Find(Sheets("TermineGestern").Cells(i, 12).Value, LookIn:=xlValues)
If rng Is Nothing Then 'nicht gefunden
'...
Else
'...
End If
Gruß Sepp

AW: Frage zu IsError
25.05.2015 19:09:32
Georg Hoffmann
Hallo Sepp,
ja, das funktioniert prima. Danke.
Ich habe gedacht, dass so ja zuerst schon der Fehler verursacht wird und dass dann die Fehlerbehandlung in der Folgezeile schon zu spät ist. Ich dachte auch ,dass dich das schon ausprobiert habe, allerdings hatte ich da das rng nicht deklariert. Spielt das eine Rolle?
LG und nochmals Danke
Georg

Anzeige
AW: Frage zu IsError
25.05.2015 19:20:01
Sepp
Hallo georg,
.Find verursacht erstmal keinen Fehler, wenn nichts gefunden wird, wenn du allerdings mit der nicht vorhandenen Funstelle etwas anstellen willst, dann kommt logischerweise der Fehler.
rng wird als Range deklariert und bei erfolgreicher Suche über .Find die entsprechende Zelle zugewiesen, wenn nichts gefunden wird, dann bleibt rng eben Nothing und das können wir abfragen.
Gruß Sepp

AW: Frage zu IsError
25.05.2015 19:22:52
Georg Hoffmann
Hallo Sepp,
o.k. hab ich (hoffentlich) verstanden.
Ein Fehler wird es erst wenn ich z.B. schreibe:
x = find.irgendwas
Wenn es dann nicht gefunden wird gibt's ne Fehlermeldung.
Deine Lösung funktioniert prima - vielen Dank nochmals!
LG Georg

Anzeige
…weil .Find hier keinen Fehler liefert, sondern …
25.05.2015 19:37:58
Luc:-?
…ein undefiniertes Objekt Nothing, Georg,
weshalb Sepps Herangehen hier das richtige ist. Ansonsten wäre es richtig, wie du IsError eingesetzt hast, denn die 1.Anweisung, in der ein Fehler auftritt, wird auch zuerst wirksam! Ein Fehler könnte hier aber nur auftreten, wenn es die Blätter u/o Bereiche nicht gäbe.
Übrigens ist es richtig, dass man GoTo nach Möglichkeit vermeiden sollte, es ist aber kein Muss, sondern orientiert sich an Pgmier­Spra­chen, die solch einen Befehl nicht enthalten. Die folgen idR aber auch einer wesentlich komple­xeren Logik, die genügend Alter­nativen bereit­stellt. In VBA reicht es, diesen Befehl nicht infla­tionär zu verwenden, damit kein sog Spaghett-Code entsteht. Man muss den Befehl aber auch nicht unbedingt vermeiden wollen, vor allem dann nicht, wenn dadurch das Pgm unüber­sicht­licher wdn würde als mit einem geschickt einge­setzten [On … ]GoTo bzw [On … ]GoSub. Das muss dann auch nicht mal vor einer Fehler­behand­lungs­rou­tine sein, denn auch das kann meist vermieden wdn.
Gruß, Luc :-?

Anzeige
AW: …weil .Find hier keinen Fehler liefert, sondern …
25.05.2015 21:42:32
Georg Hoffmann
Hallo Luc,
o.k. verstanden. LG und Danke für die Erläuterung.
Jetzt läuft alles wie gewünscht *hoffentlichnichtzufrühfreu*
LG Georg

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige