Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
860to864
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
860to864
860to864
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

860to864: On Error Goto ...

On Error Goto ...
10.04.2007 15:34:52
Philipp

Hallo zusammen,
habe ein Problem mit einer Fehlerbehandlungsroutine.
Bei u.s. Code bekomme ich "Laufzeitfehler 91", "Objektvariable oder With-Blockvariable nicht festgelegt".
Die erste Bedingung wird nicht erfüllt, er springt auch direkt zu Ohne00:
Die zweite Bedingung wird auch nicht erfüllt, allerdings springt er nicht zu Sprungmarke Ohne01:,
sondern wirft die o.g. Fehlermeldung aus.
Muß ich die Fehlerbehandlung zwischendrin zurücksetzen und wenn ja wie und wann?
Vielen Dank schon mal im Voraus!
Gruß
Philipp
On Error GoTo Ohne00:
Cells.Find(What:="Verkehrsgruppe: 00").Activate
ActiveCell.ClearContents
Ohne00:
On Error GoTo Ohne01:
Cells.Find(What:="Verkehrsgruppe: 01").Activate
ActiveCell.ClearContents
Ohne01:
On Error GoTo Ohne03:
Cells.Find(What:="Verkehrsgruppe: 03").Activate
ActiveCell.ClearContents
Ohne03:

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: On Error Goto ...
10.04.2007 15:54:27
fcs
Hallo Philipp,
ob man die Fehlerbehandlung jeweils zurücksetzen muss/kann weiss ich nicht ganz genau. Du kannst aber den Code etwas anders aufbauen, so dass du auf die Fehlerbehandlung verzichten kannst.
Gruß
Franz
Dim Zelle As Range
Set Zelle = Cells.Find(What:="Verkehrsgruppe: 00")
If Not Zelle Is Nothing Then
Zelle.ClearContents
Zelle.Activate 'Zeile nur einfügen wenn unbedingt erforderlich
End If
Set Zelle = Cells.Find(What:="Verkehrsgruppe: 01")
If Not Zelle Is Nothing Then
Zelle.ClearContents
Zelle.Activate 'Zeile nur einfügen wenn unbedingt erforderlich
End If
Set Zelle = Cells.Find(What:="Verkehrsgruppe: 03")
If Not Zelle Is Nothing Then
Zelle.ClearContents
Zelle.Activate 'Zeile nur einfügen wenn unbedingt erforderlich
End If

Anzeige
AW: On Error Goto ...
10.04.2007 15:56:16
Philipp
Hallo Franz,
danke für die Antwort - leider habe ich den Code ein bißchen (arg) gekürzt.
Es ist nicht nur die eine Zelle, die gelöscht werden muß, sondern bis Absatz unten etc., d.h.
ich komme leider nicht um die Fehlerbehandlung drumrum...
Gruß
Philipp
AW: On Error Goto ...
10.04.2007 17:10:39
IngGi
Hallo Philipp,
ohne den gesamten Code zu kennen ist das natürlich ein Ratespiel. Ich denke aber, dass ich mit meiner Vermutung richtig liege.
Wenn die erste Verkehrsgruppe nicht gefunden wird, springt das Makro in die entsprechende Fehlerbehandlungsroutine. Da in diesem Fall der nachfolgende Löschbefehl, bzw. die nachfolgenden Löschbefehle nicht ausgeführt werden darf/dürfen, springst du mit einem weiteren GoTo-Befehl wieder aus der Fehlerbehandlungsroutine zurück in's normale Programm. D.h. du hast für den Rücksprung eine weitere Sprungmarke gesetzt. Genau hier liegt aber der Knackpunkt. Du kannst eine Fehlerbehandlungsroutine nur mit einem Resume/Resume Next-Befehl beenden, was bei dir eben nicht in Frage kommt. Wenn du dagegen mit einem GoTo-Befehl auf eine Rücksprungmarke weiterspringst, wird nicht aus dem Fehlerbehandlungsmodus wieder zurück in den Normalmodus geschaltet. Excel denkt also, du bist immer noch in der Fehlerbehandlung. Während einer Fehlerbehandlung ist aber die On Error-Anweisung nicht aktiv. Daher springt dein Makro bei den folgenden Anweisungen nicht mehr in die vorgesehene Fehlerbehandlungsroutine.
Wenn du dein Makro also unbedingt über mehrere Fehlerbehandlungsroutinen realisieren möchtest, dann musst du jede einzelne Fehlerbehandlungsroutine mit einer Resume Next-Anweisung beenden und die nachfolgenden Löschbefehle anders abfangen. Im Prinzip gibt es allerdings keinen Grund, nicht die Variante von Franz zu verwenden. Deine Ansicht, dass man dort nicht auch mehrere Löschbefehle oder Löschbefehle, die sich auf mehr als eine Zelle beziehen, einbauen kann, teile ich nicht. Meiner Ansicht nach ist die Lösung von Franz ideal und müsste nur auf dein spezifisches Problem angepasst werden.
Gruß Ingolf
Anzeige
AW: On Error Goto ...
10.04.2007 23:39:45
fcs
Hallo Philipp,
wenn du lieber mit den Sprungadressen arbeiten willst und den restlichen Code nicht jeweils zwischen If- und End If-Zeile einfügen kannst bzw. willst, dann kannst du das Ganze auch ein klein wenig umstellen, um die nicht unbedingt notwendige Fehlerbehandlung zu vermeiden.
Gruß
Franz
Dim Zelle As Range
Set Zelle = Cells.Find(What:="Verkehrsgruppe: 00")
If Zelle Is Nothing Then GoTo Ohne00:
Zelle.ClearContents
Zelle.Activate 'Zeile nur einfügen wenn unbedingt erforderlich
'.. und der weitere Code
Ohne00:
Set Zelle = Cells.Find(What:="Verkehrsgruppe: 01")
If Zelle Is Nothing Then GoTo Ohne01
Zelle.ClearContents
Zelle.Activate 'Zeile nur einfügen wenn unbedingt erforderlich
'.. und der weitere Code
Ohne01:
Set Zelle = Cells.Find(What:="Verkehrsgruppe: 03")
If Zelle Is Nothing Then GoTo Ohne03
Zelle.ClearContents
Zelle.Activate 'Zeile nur einfügen wenn unbedingt erforderlich
'.. und der weitere Code
Ohne03:

Anzeige
AW: On Error Goto ...
24.04.2007 09:06:54
Philipp
Hallo Franz, hallo Ingolf,
ich muß mich erstmal entschuldigen, daß ich mich solange nicht gemeldet habe, aber
ich war geschäftlich unterwegs und hatte noch keine Möglichkeit, alles zu testen.
Vielen Dank für die tolle Unterstützung - ich habe es jetzt alles testen können und es
FUNKTIONIERT SUPER!!!
Und mit dem ACTIVATE (das stand noch hinter meinem Code) das war wohl der Knackpunkt,
weswegen es nicht funktionieren wollte.
Viele Grüße
Philipp

174 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige