Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Fehler abfangen mit On Error GoTo

Fehler abfangen mit On Error GoTo
06.10.2004 17:45:41
Arnd
Hallo,
ich möchte eine Datei per Function öffnen:
~

Private Function Gesamtübersichtöffnen() As Boolean
Const Lw = "Y:\"
Const Pfad = "Y:\Kalkulation"
Const Datei = "PWS Kalkulationsprüfungsbericht Gesamt1.xls"
ChDrive Lw
ChDir Pfad
On Error GoTo Fehlermeldung
Gesamtübersichtöffnen = True
Workbooks.Open Datei
Exit Function
Fehlermeldung:
MsgBox ("Die Datei " & Datei & " konnte nicht geöffnet werden. Der Datensatz konnte nur in Ihrer lokalen Datei gespeichert werden.")
Gesamtübersichtöffnen = False
End Function

~
Wenn jetzt aber die Datei nicht geöffnet werden kann, weil zum Beispiel der Dateiname nicht stimmt, soll direkt zu "Fehlermeldung" gesprungen. Leider werden die beiden Zeilen unter "On Error GoTo Fehlermeldung" auch noch ausgeführt, bevor zu "Fehlermeldung gesprungen wird.
Wie kann ich das abstellen?
Wie kann ich in der Fehlermeldung in der Messagebox ein "Enter" einfügen, damit man die Meldung besser lesen kann?
Vielen Dank für Eure Hilfe!!!!
Gruß Arnd
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler abfangen mit On Error GoTo
Oberschlumpf
Hi Arndt
Lösch mal die 2 Zeilen unter "Fehlermeldung:" und füge diese Zeilen ein:

If Err.Number = FEHLERNUMMER Then
MsgBox ("Die Datei " & Datei & " konnte nicht geöffnet werden. Der Datensatz konnte nur in Ihrer lokalen Datei gespeichert werden.")
Gesamtübersichtöffnen = False
Else
If Err.Number <> 0 Then
MsgBox "Ein unerwarteter Fehler trat auf. Das Makro wurde abgebrochen
End
End If
End If

Für FEHLERNUMMER musst Du natürlich die FEHLERNUMMER eintragen, die dem Fehler zugeordnet ist, der ausgelöst wird, wenn die Datei nicht vorhanden ist.
Sollte ein anderer Fehler auftreten, der Dir bis jetzt noch nicht bekannt ist, wird der Anwender darauf hingewiesen und das Makro wird beendet.
Wenn kein Fehler auftritt, wird als FEHLERNUMMER 0 zurückgegeben und die Fehlermeldung: wird übersprungen.
Konnte ich helfen?
Was meinst Du mit "Enter einfügen"?
Bye
Thorsten
Anzeige
AW: Fehler abfangen mit On Error GoTo
Arnd
Hallo,
mit "Enter" meine ich, dass der 2. Satz der Fehlermeldung in einer neuen Zeile anfängt.
Gruß Arnd
AW: Fehler abfangen mit On Error GoTo
Jens_Pu
Halo Arnd,
Msgbox "Zeile1" & vbcr & "Zeile2"
Gruß Jens
AW: Fehler abfangen mit On Error GoTo
Oberschlumpf
Hi
Korrigiere diese Zeile(n) wie folgt:

MsgBox ("Die Datei " & Datei & " konnte nicht geöffnet werden. Der Datensatz konnte nur in Ihrer lokalen Datei gespeichert werden.")

änderst Du in

MsgBox ("Die Datei " & Datei & " konnte nicht geöffnet werden." & vbCrLf & "Der Datensatz konnte nur in Ihrer lokalen Datei gespeichert werden.")

Diese Zeile

MsgBox "Ein unerwarteter Fehler trat auf. Das Makro wurde abgebrochen"

änderst Du um in

MsgBox "Ein unerwarteter Fehler trat auf." & vbCrLf & "Das Makro wurde abgebrochen"

Läuft denn nun alles? Ich meine, auch mein 1. Vorschlag?
Bye
Thorsten
Anzeige
AW: Fehler abfangen mit On Error GoTo
Reinhard
Hi Arnd,
chdrive wertet nur das erste Zeichen aus, also langt "Y". Ein Fehler kann ja erst 2 zeilen unter der "On Error goto" auftreten, beim "Open". Von daher arbeitet das programm richtig.
ungetestet:

Private Function Gesamtübersichtöffnen() As Boolean
Const Lw = "Y"
Const Pfad = "Y:\Kalkulation"
Const Datei = "PWS Kalkulationsprüfungsbericht Gesamt1.xls"
ChDrive Lw
ChDir Pfad
On Error GoTo Fehlermeldung
Gesamtübersichtöffnen = True
Workbooks.Open Datei
Exit Function
Fehlermeldung:
Mldg="Die Datei " & Datei & " konnte nicht geöffnet werden." & chr(13)
Mldg=Mldg & "Der Datensatz konnte nur in Ihrer lokalen Datei" & chr(13) & "gespeichert werden."
MsgBox (Mldg)
Gesamtübersichtöffnen = False
End Function

Gruß
Reinhard
Anzeige
AW: Fehler abfangen mit On Error GoTo
Arnd
Erstmal danke für euere Antworten, aber irgendwie klappt das immer noch nicht so wie ich mir das vorstelle.
Hier nochmal der Code:
~

Private Function Gesamtübersichtöffnen()
Const Lw = "Y:\"
Const Pfad = "Y:\Kalkulation"
Const Datei = "PWS Kalkulationsprüfungsbericht Gesamt.xls"
ChDrive Lw
ChDir Pfad
On Error GoTo Fehlermeldung
Gesamtübersichtöffnen = True
Workbooks.Open Datei
Exit Function
Fehlermeldung:
Mldg = "Die Datei " & Datei & " konnte nicht geöffnet werden." & Chr(13)
Mldg = Mldg & "Der Datensatz konnte nur in Ihrer lokalen Datei gespeichert werden." & Chr(13)
Mldg = Mldg & "Bitte überprüfen Sie, ob die Datei in " & Pfad & "\" & Datei & " gespeichert ist." & Chr(13)
Mldg = Mldg & "Falls dies nicht der Fall sein sollte, ändern Sie bitte den Speicherort oder den Namen!"
Antwort = MsgBox(Mldg, vbCritical, "Warnung!!!")
Gesamtübersichtöffnen = False
End Function

~
Folgendes soll die Function machen. Sie soll die Datei öffnen, wenn die im angegebenen Pfad mit dem Namen vorhanden ist. Wenn die Funktion die Datei in dem Pfad unter dem angegebenen Namen nicht findet, soll die Fehlermeldung erscheinen.
Folgendes passiert nun. Die real existierende Datei heißt"PWS Kalkulationsprüfungsbericht Gesamt.xls". Wenn ich im Code jetzt den Namen auf "PWS Kalkulationsprüfungsbericht Gesamt1.xls" ändere, schlägt die Fehlermeldung an. Soweit so gut.
Wenn ich den obigen Code aber laufen lasse, wenn ich die wirkliche Datei umbenannt habe, oder die Datei sich gar nicht in dem Ordner befindet, läuft das der Code so durch und in der Ansicht links erscheint auch die "angeblich" geöffnet Datei. Auch werden hierbei nicht die Daten gespeichert, was der Grund der Öffnung der Datei ist.
Ích hoffe man kann das Problem verstehen!!
Wie kann ich das ändern?
Gruß Arnd
Anzeige
AW: Fehler abfangen mit On Error GoTo
Arnd
Hi,
das gerade von mir geschilderte Problem hat sich erledigt! Sorry, man sollte nicht mit Kopien auf dem Desktop arbeiten, wenn der Pfad irgendwo anders hingeht und dort alle Dateien richtig sind :-)
Gruß Arnd
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Fehler abfangen mit On Error GoTo in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor in Excel, indem du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (DeineArbeitsmappe)".
    • Wähle "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:

    Private Function Gesamtübersichtöffnen() As Boolean
       Const Lw = "Y:\"
       Const Pfad = "Y:\Kalkulation"
       Const Datei = "PWS Kalkulationsprüfungsbericht Gesamt.xls"
       ChDrive Lw
       ChDir Pfad
       On Error GoTo Fehlermeldung
       Gesamtübersichtöffnen = True
       Workbooks.Open Datei
       Exit Function
    Fehlermeldung:
       MsgBox "Die Datei " & Datei & " konnte nicht geöffnet werden." & vbCrLf & "Der Datensatz konnte nur in Ihrer lokalen Datei gespeichert werden."
       Gesamtübersichtöffnen = False
    End Function
  4. Ersetze die Datei- und Pfadkonstanten, wenn nötig, um auf deine Datei zu verweisen.

  5. Teste die Funktion, indem du sie aufrufst.


Häufige Fehler und Lösungen

  • Fehler: Datei nicht gefunden
    Wenn du den Dateinamen oder den Pfad falsch angibst, wird der Fehler ausgelöst. Stelle sicher, dass beide korrekt sind.

  • Lösung: Verwendung von On Error GoTo
    Nutze On Error GoTo Fehlermeldung, um direkt zu der Fehlermeldung zu springen, wenn ein Fehler auftritt.

  • Problem: Fehlermeldung erscheint nicht
    Überprüfe, ob du die Zeilen nach On Error GoTo korrekt implementiert hast.


Alternative Methoden

  • On Error Resume Next
    Diese Methode ignoriert Fehler und fährt mit dem nächsten Befehl fort. Dies kann nützlich sein, aber sei vorsichtig, da dies zu unentdeckten Fehlern führen kann.

    On Error Resume Next
    Workbooks.Open Datei
    If Err.Number <> 0 Then
       ' Fehlerbehandlung
    End If
  • VBA Err-Objekt
    Verwende Err.Number und Err.Description, um spezifische Fehler zu identifizieren und entsprechend zu handeln.


Praktische Beispiele

  1. Fehlermeldung anpassen: Um die Fehlermeldung benutzerfreundlicher zu gestalten, kannst du vbCrLf verwenden, um Zeilenumbrüche zu erzeugen. Beispiel:

    MsgBox "Die Datei " & Datei & " konnte nicht geöffnet werden." & vbCrLf & "Bitte überprüfen Sie den Pfad."
  2. Komplexere Fehlerbehandlung: Verwende mehrere If-Bedingungen, um verschiedene Fehler zu behandeln:

    If Err.Number = 2 Then
       MsgBox "Datei nicht gefunden."
    ElseIf Err.Number = 1004 Then
       MsgBox "Zugriffsfehler."
    End If

Tipps für Profis

  • Testen vor dem Einsatz: Stelle sicher, dass du deinen Code in einer Testumgebung prüfst, bevor du ihn in einer produktiven Umgebung verwendest.
  • Dokumentation: Halte deine Fehlerbehandlungen gut dokumentiert, um zukünftige Wartungen zu erleichtern.
  • Verwende Debug.Print: Nutze Debug.Print für die Ausgabe von Fehlerdetails in das Immediate-Fenster des VBA-Editors zur einfacheren Fehlersuche.

FAQ: Häufige Fragen

1. Wie füge ich mehrere Zeilen in einer MsgBox ein?
Verwende vbCrLf oder Chr(13) zwischen den Texten in der MsgBox, um Zeilenumbrüche zu erzeugen.

2. Was bedeutet On Error Resume Next?
Diese Anweisung bewirkt, dass der Code bei einem Fehler weiterläuft, ohne die Ausführung anzuhalten. Sei vorsichtig, da dies dazu führen kann, dass Fehler unentdeckt bleiben.

3. Wie kann ich spezifische Fehler abfangen?
Verwende das Err-Objekt, um den Fehlercode zu überprüfen und spezifische Maßnahmen zu ergreifen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige