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

On Error GoTo...

On Error GoTo...
27.02.2020 08:34:09
Herbert
Hallo meine Lieben,
ich wollte das wenn ich auf einem Button drück und ein Code ausgeführt wird, dabei aber ein Fehler passiert, das man zu einer Userform weitergeleitet wird, wo man diesen mit vorgegeben Sachen fixen kann.
Es funktioniert alles, außer das mit dem Fehler...
Hier der Code:
Private Sub CommandButton_Speichern_Click()
On Error GoTo Speicherort_ändern
If Sheets("Einstellungen").Range("D6").Value = "" Then
SpeicherDaten_einfügen.show
ActiveSheet.Range("A3:W40").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Sheets(" _
Einstellungen").Range("D6") & "\" & Sheets("Achsbild").Range("U1") & ".pdf", Quality:=xlQualityStandard _
, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
:=False
Sheets("Achsbild").CommandButton_Speichern.AutoSize = True
Sheets("Achsbild").CommandButton_Speichern.Width = 120
Sheets("Achsbild").CommandButton_Speichern.Height = 26
Else
ActiveSheet.Range("A3:W40").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Sheets(" _
Einstellungen").Range("D6") & "\" & Sheets("Achsbild").Range("U1") & ".pdf", Quality:=xlQualityStandard _
, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
:=False
Sheets("Achsbild").CommandButton_Speichern.AutoSize = True
Sheets("Achsbild").CommandButton_Speichern.Width = 120
Sheets("Achsbild").CommandButton_Speichern.Height = 26
End If
Speicherort_ändern:
Speicherort_ändern.show
End Sub
Vielen Dank im Voraus,
LG Herbert!

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: On Error GoTo...
27.02.2020 09:01:57
Nepumuk
Hallo Herbert,
was soll ich mit unter "funktioniert nicht" vorstellen?
Gruß
Nepumuk
AW: On Error GoTo...
27.02.2020 09:05:15
Herbert
Hallo Nepumuk,
also an sich funktioniert es, aber nicht bei einem Error sondern er sagt einfach immer es ist ein Error da...
Also wenn kein Error ist soll er die normale Speicherfunktion nutzen, aber ich habe alles so gemacht das kein Fehler kommen kann, aber On Error GoTo ... wird trzd. ausgeführt, so das ich am Ende wieder bei der Userform da bin, die nur bei einem Fehler erscheinen soll.
Danke für die schnelle Antwort,
LG Herbert!
AW: On Error GoTo...
27.02.2020 09:09:59
Daniel
Hi
naja, ist doch logisch.
das Makro läuft immer bis zum END SUB, außer es wird vorzeitig durch ein EXIT SUB beendet.
eine Sprungmarke alleine hat noch keine Stoppwirkung für dne Markolauf.
wenn du solche Fehlersprünge mit einer Fehlerbehandlung am Ende des Makros hast, muss vor der Fehlersprungmarke immer ein EXIT SUB stehen, wenn du vermeiden willst dass die Fehlerroutine immer ausgeführt wird auch wenn gar kein Fehler auftritt.
Gruß Daniel
Anzeige
AW: On Error GoTo...
27.02.2020 09:05:59
Daniel
Hi
ich vermute mal, dass du gar keinen Fehler bekommst, sondern eine Rückfrage des Systems.
Wenn du beispielweise eine Datei unter einem bestimmten Namen speichern willst und diese Datei schon existiert, dann fragt dich Excel, ob du sie überschreiben oder unter einem anderen Namen speichern willst.
Diese Rückfrage erscheint auch, wenn das speichern unter in einem Makro passiert.
man kann diese Rückfragen mit Applicaton.DisplayAlerts = False unterdrücken, ausgeführt wird dann in der Regel die OK/JA-Option.
Wenn das bei dir der Fall ist, dann solltest du vorher mit DIR abfragen, ob die Datei schon vorhanden ist, damit du dann über die Userform den Speicherort ändern kannst.
Generell sollte man versuchen, Fehler durch vorherige Abfragen abzufangen falls dies möglich ist, und das On Error Goto nur für "unvorhergesehene" Fehler reservieren.
Gruß Daniel
Anzeige
AW: On Error GoTo...
27.02.2020 09:19:53
Herbert
Hallo Daniel,
nein Excel überschreibt die Datei einfach, so ist es auf jeden fall bei mir, weil ich den Display Alert ausgemacht habe denke ich. Trotzdem vielen danke für deine Antwort.
LG Herbert!
AW: On Error GoTo...
27.02.2020 09:12:06
Werner
Hallo,
ist ja auch logisch. Du steigst ja bei einer Abarbeitung des Codes ohne Fehler nicht aus der Prozedur aus, so dass immer auch deine Fehlersprungmarke mit abgearbeitet wird.
Also nach fehlerfreier Abarbeitung muss noch ein Exit Sub rein.
End If
Exit Sub
Speicherort_ändern:
Gruß Werner
AW: On Error GoTo...
27.02.2020 09:16:54
Herbert
Hallo Werner,
Perfekt danke es funktioniert jetzt genau wie ich es wollte.
Vielen Dank,
LG Herbert!
Anzeige
Gerne u. Danke für die Rückmeldung und..
27.02.2020 09:34:24
Werner
Hallo,
...du solltest dir angewöhnen auch alle Beiträge zu lesen. Siehe Beitrag von Daniel von 09:09:59
Gruß Werner
AW: Gerne u. Danke für die Rückmeldung und..
27.02.2020 11:28:22
Herbert
Hallo Werner,
eigentlich hatte ich auf seine Antwort doch geantwort?
LG Herbert!
AW: Gerne u. Danke für die Rückmeldung und..
27.02.2020 11:30:31
Herbert
Hey nochmal,
habe verstanden was du meinst, aber zu dem Zeitpunkt wo ich das gelesen habe, hatte ich das nicht ganz so verstanden wie ich es jetzt verstehe...
Tut mir Leid und seine Lösung ist die Selbe wie deine nur das er erklärt hat was es macht und das hatte ich zu dem Zeitpunkt nicht durchblickt. Tut mir Leid!
LG Herbert!
Und außerdem sind diese identischen Lösungen ...
27.02.2020 13:52:24
Luc:?
…nicht die elegantesten, Folks;
man kann statt des Exit … ja auch ein GoTo … verwenden, denn ohne und auch nach einem Fehler können allgemeine AbschlussArbeiten erforderlich sein. Will man den Sprungbefehl vermeiden, kann man auch mit If CBool(Err.Number) Then abfragen, ob an/vor dieser PgmStelle ein Fehler vorlag/auftrat.
Gruß, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
AW: Und außerdem sind diese identischen Lösungen ...
27.02.2020 15:14:38
Herbert
Hey Luc:?,
es tut mir leid dir das sagen zu müssen, aber das ist für mich ein bisschen zu hoch, ich verstehe ein ganz paar Sachen von vba, aber nicht gerade den großteil. :)
Aber trzd. Danke,
LG Herbert!
AW: Und außerdem sind diese identischen Lösungen ...
28.02.2020 11:50:41
Daniel
Hi
naja, du willst verhindern dass der Code nach dem Fehlersprung ausgeführt wird, wenn das Makro normal ohne Fehler durchläuft.
Das kann man auf mehreren Wegen erreichen.
Ein gezeigter Weg ist, dass man mit EXIT SUB den Makrolauf vorher beendet, im Fehlerfall wird diese Zeile übersprungen:
Sub xxx()
… on error goto Fehler
… hier kann der Fehler passieren
Exit Sub
Fehler:
hier der Code für den Fehlerfall
End Sub
die andere Variante wäre, da solche abbrüche von manchen als unschön empfunden werden, an dieser Stelle zu prüfen, ob ein Fehler stattgefunden hat.
Dazu kann man die Systemvariable err verwenden, welche im Regelfall den Wert 0 hat und im Fehlerfall die Nummer des Fehlers enthält, so wie sie dir in der Meldung angezeigt wird.
Dh du könntest dann die Fehlerbehandlung so überspringen, wenn kein Fehler passiert ist:
Sub xxx()
… on error goto Fehler
… hier kann der Fehler passieren
Fehler:
if err  0 Then
hier der Code für den Fehlerfall
End if
End Sub

ggf kannst du auch die Fehlernummer genauer abfragen und bei unterschiedlichen Fehlern unterschiedlich reagieren.
Gruß Daniel
Anzeige

174 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige