Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Fehler abfangen im VBA-Code

Fehler abfangen im VBA-Code
13.08.2004 14:43:14
Torsten
Hallo zusammen,
in der nachfolgenden Datei habe ich einen VBA-Code erarbeitet, mit dem ich verschiedene Dateien aktualisieren kann und gleichzeitig über Variablen Summen zu bestimmten Daten ziehen und in ein WS schreiben kann:
https://www.herber.de/bbs/user/9593.xls
Im Einzelnen: In einer Zentraldatei habe ich pro Kostenstelle die Gehälter und Incentives hinterlegt. Diese Daten gelangen über eine SVerweis-Verknüpfung in die Budgetdateien der Kostenstellen. Nachdem die Personalkostendaten aktualisiert wurden, möchte ich natürlich nicht alle einzelnen Budgetdateien der Kostenstellen manuell öffnen, aktualisieren, speichern und schließen sondern
mit Hilfe meines VBA-Codes updaten. Gleichzeitig möchte ich aus Kontrollzwecken jeweils die Summen der Incentives/Gehälter in meine UpDate-Datei eintragen lassen. Das ist mir mit meinem Code auch alles gelungen (und mit Hilfe von Udo aus'm Pott).
Allerdings brauche ich für folgenden offenen Punkt Eure Hilfe:
Die zu aktualisierenden Budgetdateien (NL1_TEST.xls, NL2_TEST.xls, INDUS_TEST.xls) werden im Code nacheinander (über das Sheet("FILES")) aktualisiert. Ich hätte zusätzlich gern, daß Excel, wenn dabei etwas schiefläuft, abbricht und eine MsgBox bringt, mit dem Hinweis bei welcher Datei der Abbruch erzeugt wurde.
Ich wäre Euch daher sehr dankbar, wenn Ihr mir helfen könnt.
Viele Grüße
Torsten
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler abfangen im VBA-Code
Uduuh
Hallo,
war eine Zeit lang nich online.

Private Sub cmb_UPDATE_Click()
If MsgBox("Sollen die Kostendateien jetzt aktualisiert werden?", vbYesNo) = vbYes Then
Dim EI As Long  'Estimate Incentive
Dim EG As Long  'Estimate Gehalt
Dim BI As Long  'Budget Incentive
Dim BG As Long  'Budget Gehalt
Dim i As Integer
Dim irow As Integer
Dim wbName As String
On Error GoTo errHandler
Application.ScreenUpdating = False
Application.StatusBar = "Dieser Vorgang dauert ein paar Minuten. Bitte Geduld haben..."
Application.DisplayAlerts = False
Application.EnableEvents = False 'die MsgBoxen beim Schließen der Kostendateien werden unterdrückt
For i = 1 To Sheets("FILES").Range("A1").End(xlDown).Row
wbName = Sheets("FILES").Cells(i, 1)
Workbooks.Open wbName, 3
ActiveWorkbook.Save
EI = EI + Sheets("ENTER").Range("I40").Value
EG = EG + Sheets("ENTER").Range("I42").Value
BI = BI + Sheets("ENTER").Range("O40").Value
BG = BG + Sheets("ENTER").Range("O42").Value
ActiveWorkbook.Close , True
Next i
With Worksheets("UpDate")
irow = .Cells(Rows.Count, 8).End(xlUp).Row + 1
.Unprotect "maze"
.Cells(irow, 2).Value = Date
.Cells(irow, 3).Value = Time
.Cells(irow, 4).Value = Environ("Username")
.Cells(irow, 5).Value = EI
.Cells(irow, 6).Value = EG
.Cells(irow, 7).Value = BI
.Cells(irow, 8).Value = BG
.Protect "maze"
End With
Application.DisplayAlerts = True
Application.StatusBar = False
Application.EnableEvents = True
MsgBox "Dateien wurden aktualisiert", vbOKOnly
Application.ScreenUpdating = True
End If
Exit Sub
errHandler:
Application.DisplayAlerts = True
Application.StatusBar = False
Application.EnableEvents = True
MsgBox "Beim Update der Datei " & wbName & " ist ein Fehler aufgetreten"
End Sub

Gruß aus'm Pott
Udo
Anzeige
AW: erledigt - mT
Torsten
Hallo Udo,
ich habe nunmehr den Errorhandler eingebaut. Läuft natürlich bestens!
Vielen Dank für Hilfe.
Gruß
Torsten
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fehler abfangen im VBA-Code


Schritt-für-Schritt-Anleitung

Um Fehler im VBA-Code abzufangen, kannst Du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Einfügen des Error Handlers: Füge am Anfang Deiner Subroutine die Zeile On Error GoTo errHandler hinzu, um den Fehlerhandler zu aktivieren.

  2. Fehlerbehandlungskodet hinzufügen: Am Ende Deines Codes sollte der Fehlerbehandlungscode stehen. Hier ein Beispiel:

    errHandler:
    Application.DisplayAlerts = True
    Application.StatusBar = False
    Application.EnableEvents = True
    MsgBox "Beim Update der Datei " & wbName & " ist ein Fehler aufgetreten"
  3. Anpassung der Variablen: Stelle sicher, dass Du alle Variablen, die Du im Code verwendest, korrekt deklariert hast.

  4. Testen des Codes: Führe Deinen Code aus und simuliere Fehler, um sicherzustellen, dass die MsgBox korrekt angezeigt wird.


Häufige Fehler und Lösungen

  • Problem: Der Code stürzt ab, ohne eine Fehlermeldung anzuzeigen.

    • Lösung: Stelle sicher, dass der Error Handler korrekt implementiert ist. Überprüfe, ob On Error GoTo errHandler an der richtigen Stelle steht.
  • Problem: Die MsgBox zeigt nicht die richtige Dateiname an.

    • Lösung: Überprüfe, ob die Variable wbName vor dem errHandler korrekt gesetzt ist.

Alternative Methoden

Du kannst auch andere Methoden zur Fehlerbehandlung in Excel VBA verwenden, wie zum Beispiel:

  • Try-Catch-Ansatz (in neueren Versionen von VBA): Dies ist ähnlich, aber nicht in allen Excel-Versionen verfügbar.
  • Logging von Fehlern: Schreibe Fehler in eine Log-Datei oder ein Arbeitsblatt, anstatt sie nur in einer MsgBox anzuzeigen.

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du Fehler abfangen kannst:

Private Sub cmb_UPDATE_Click()
    On Error GoTo errHandler
    ' Dein VBA-Code hier...

    Exit Sub
errHandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
End Sub

In diesem Beispiel wird nicht nur der Dateiname angezeigt, sondern auch eine detaillierte Beschreibung des Fehlers mit Err.Description.


Tipps für Profis

  • Verwende spezifische Fehlercodes: Anstatt einen allgemeinen Fehlerhandler zu verwenden, kannst Du spezifische Fehlercodes abfangen und entsprechend reagieren.
  • Dokumentation: Dokumentiere Deine Fehlerbehandlungsstrategien in Deinem Code, damit andere (oder Du selbst) später verstehen, was passiert.
  • Testen: Teste Deinen Code gründlich, um sicherzustellen, dass die Fehlerbehandlung in allen möglichen Szenarien funktioniert.

FAQ: Häufige Fragen

1. Was ist der Zweck der Fehlerbehandlung in VBA?
Die Fehlerbehandlung in VBA ermöglicht es Dir, Fehler im Code zu erkennen und darauf zu reagieren, anstatt dass der Code einfach abstürzt.

2. Wie kann ich spezifische Fehler abfangen?
Du kannst die Err-Objekt verwenden, um spezifische Fehlercodes zu identifizieren und entsprechende Aktionen durchzuführen.

3. Gibt es Unterschiede zwischen Excel VBA und Access VBA in der Fehlerbehandlung?
Die grundlegenden Prinzipien der Fehlerbehandlung sind ähnlich, aber es gibt einige Unterschiede in der Implementierung und den verfügbaren Funktionen in beiden Anwendungen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige