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

on error goto / resume next funktioniert nicht

Forumthread: on error goto / resume next funktioniert nicht

on error goto / resume next funktioniert nicht
13.03.2007 10:32:00
Sandra
Hallo zusammen,
habe folgendes Problem.
Habe ein Pivot-chart erstellt und lasse per chart_calculate ein Makro automatisch ausführen, dass mir das Chart in meine gewünschte Formatierung bringt. soweit so gut.
Mein Problem ist nun, wenn ich in meiner Pivotauswahl bspw. den Monat Dezember auswähle und dort keine Werte vorhanden sind und so auch kein Chart angezeigt werden kann, dann springt das Makro in den Debugg-Modus. Ist auch in Ordnung, denn es gibt keine Datenreihen die Formatiert werden können.
Nun wollte ich erst mit [i]on error resume next [/i]die Fehlermeldung unterbinden und eine MsgBox erscheinen lassen funktioniert aber nicht. Auch mit Hilfe von [i]on error got to [/i]Fehler hatte ich keine Chance. Er springt immer wieder in den Debug-Modus.
Kann mir jemand helfen? Ach so, es ist ein Laufzeitfehler 1004
Liegt es vielleicht an Application.EnableEvents = False, dass die fehlermeldung nicht funktioniert.
Hier noch mein Code:
Private Sub Chart_Calculate() 

On Error Resume Next 
If Err.Number = 1004 Then 
MsgBox "Keine Werte vorhanden !" 
Exit Sub 
End If 

Application.EnableEvents = False 

'Formatierung 2.Datenreihe 
ActiveChart.SeriesCollection(2).DataLabels.Select 
Selection.Shadow = False 
Selection.Fill.TwoColorGradient Style:=msoGradientHorizontal, Variant:=4 
With Selection 
.Fill.Visible = True 
.Fill.ForeColor.SchemeColor = 2 
.Fill.BackColor.SchemeColor = 50 
.NumberFormat = "#,##0.00" 
.Border.Weight = xlHairline 
.Border.LineStyle = xlAutomatic 
End With 

ActiveChart.SeriesCollection(2).Select 
With Selection.Border 
.ColorIndex = 50 
.Weight = xlThin 
.LineStyle = xlContinuous 
End With 
With Selection 
.MarkerBackgroundColorIndex = 50 
.MarkerForegroundColorIndex = 50 
.MarkerStyle = xlSquare 
.Smooth = False 
.MarkerSize = 5 
.Shadow = False 
End With 

'Formatierung 1.Datenreihe 
ActiveChart.SeriesCollection(1).DataLabels.Select 
Selection.Shadow = False 
Selection.Fill.TwoColorGradient Style:=msoGradientHorizontal, Variant:=4 
With Selection 
.Fill.Visible = True 
.Fill.ForeColor.SchemeColor = 2 
.Fill.BackColor.SchemeColor = 41 
.NumberFormat = "#,##0.00" 
.Border.Weight = xlHairline 
.Border.LineStyle = xlAutomatic 
End With 
ActiveChart.SeriesCollection(1).Select 
With Selection.Border 
.ColorIndex = 5 
.Weight = xlThin 
.LineStyle = xlContinuous 
End With 
With Selection 
.MarkerBackgroundColorIndex = 41 
.MarkerForegroundColorIndex = 41 
.MarkerStyle = xlDiamond 
.Smooth = False 
.MarkerSize = 5 
.Shadow = False 
End With 

Application.EnableEvents = True 

End Sub

Wäre super wenn jemand ein Rat oder Tipp hätte.
grüße
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: on error goto / resume next funktioniert nicht
13.03.2007 10:37:29
Andi
Hi,
so müsste es gehen:
Private Sub Chart_Calculate()
On Error GoTo errorhandler
Application.EnableEvents = False
'

Schönen Gruß,
Andi
AW: on error goto / resume next funktioniert nicht
13.03.2007 10:44:00
Sandra
Danke Andi für deine Mühe, aber leider funktioniert es immer noch nicht.
AW: on error goto / resume next funktioniert nicht
13.03.2007 15:17:00
Andi
Hi,
sorry, da fällt mir im Augenblick leider nix ein...
Schönen Gruß,
Andi
Anzeige
AW: on error goto / resume next funktioniert nicht
13.03.2007 21:10:28
Harry
Hallo Sandra,
vielleicht so?
Private Sub Chart_Calculate()

On Error GoTo errorhandler

Application.EnableEvents = False

'Formatierung 2.Datenreihe
ActiveChart.SeriesCollection(2).DataLabels.Select
Selection.Shadow = False
Selection.Fill.TwoColorGradient Style:=msoGradientHorizontal, Variant:=4
With Selection
.Fill.Visible = True
.Fill.ForeColor.SchemeColor = 2
.Fill.BackColor.SchemeColor = 50
.NumberFormat = "#,##0.00"
.Border.Weight = xlHairline
.Border.LineStyle = xlAutomatic
End With

ActiveChart.SeriesCollection(2).Select
With Selection.Border
.ColorIndex = 50
.Weight = xlThin
.LineStyle = xlContinuous
End With
With Selection
.MarkerBackgroundColorIndex = 50
.MarkerForegroundColorIndex = 50
.MarkerStyle = xlSquare
.Smooth = False
.MarkerSize = 5
.Shadow = False
End With

'Formatierung 1.Datenreihe
ActiveChart.SeriesCollection(1).DataLabels.Select
Selection.Shadow = False
Selection.Fill.TwoColorGradient Style:=msoGradientHorizontal, Variant:=4
With Selection
.Fill.Visible = True
.Fill.ForeColor.SchemeColor = 2
.Fill.BackColor.SchemeColor = 41
.NumberFormat = "#,##0.00"
.Border.Weight = xlHairline
.Border.LineStyle = xlAutomatic
End With
ActiveChart.SeriesCollection(1).Select
With Selection.Border
.ColorIndex = 5
.Weight = xlThin
.LineStyle = xlContinuous
End With
With Selection
.MarkerBackgroundColorIndex = 41
.MarkerForegroundColorIndex = 41
.MarkerStyle = xlDiamond
.Smooth = False
.MarkerSize = 5
.Shadow = False
End With

Application.EnableEvents = True

Exit Sub

errorhandler:

If Err.Number = 1004 Then
MsgBox "Keine Werte vorhanden !"
End If
End Sub

Gruß
Harry
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Fehlerbehandlung in Excel VBA: on error resume next


Schritt-für-Schritt-Anleitung

  1. Code Struktur: Stelle sicher, dass dein Makro eine Fehlerbehandlungsroutine enthält. Beginne dein Makro mit On Error GoTo errorhandler, um zu einem spezifischen Fehlerhandler zu springen, wenn ein Fehler auftritt.

    Private Sub Chart_Calculate()
       On Error GoTo errorhandler
       Application.EnableEvents = False
       ' Dein Code hier
  2. Fehlerbehandlung: Füge am Ende deines Makros die Fehlerbehandlungsroutine hinzu. Setze Exit Sub vor den Fehlerhandler, um sicherzustellen, dass die Fehlerbehandlung nur bei einem Fehler aktiviert wird.

    Exit Sub
    
    errorhandler:
       If Err.Number = 1004 Then
           MsgBox "Keine Werte vorhanden!"
       End If
  3. Testen: Teste dein Makro, indem du verschiedene Daten auswählst. Wenn keine Werte vorhanden sind, sollte die MsgBox erscheinen, anstatt dass das Makro in den Debug-Modus springt.


Häufige Fehler und Lösungen

  • Fehler 1004: Wenn du den Fehler 1004 erhältst, stelle sicher, dass du den Fehlerhandler korrekt implementiert hast. Überprüfe, ob Application.EnableEvents = False den Fehler verursacht. Setze es erst nach der Fehlerbehandlung auf True.

  • on error resume next funktioniert nicht: Verwende On Error GoTo errorhandler anstelle von On Error Resume Next, um spezifische Fehler besser zu behandeln.


Alternative Methoden

  • On Error Resume Next: Diese Anweisung ignoriert alle Fehler und fährt mit dem nächsten Befehl fort. Dies kann nützlich sein, wenn du nur bestimmte Fehler ignorieren möchtest, jedoch nicht für die vollständige Fehlerbehandlung empfohlen.

    On Error Resume Next
    ' Code, der möglicherweise einen Fehler verursacht
  • On Error GoTo 0: Setzt die Fehlerbehandlung zurück, sodass nachfolgende Fehler wie üblich behandelt werden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du On Error Resume Next verwenden kannst, um einen Fehler zu ignorieren:

Sub Beispiel()
    On Error Resume Next
    ' Versuch, auf ein nicht vorhandenes Objekt zuzugreifen
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("NichtExistierend")
    If ws Is Nothing Then
        MsgBox "Das Arbeitsblatt existiert nicht."
    End If
End Sub

Dieses Beispiel zeigt, wie du mit Fehlern umgehen kannst, ohne dass das Makro stoppt.


Tipps für Profis

  • Verwende On Error GoTo für eine gezielte Fehlerbehandlung und nicht On Error Resume Next, um die Fehlersuche zu erleichtern.
  • Dokumentiere deine Fehlerbehandlungsroutinen, um später nachzuvollziehen, warum bestimmte Entscheidungen getroffen wurden.
  • Teste deine Makros gründlich, um sicherzustellen, dass alle möglichen Fehlerquellen abgedeckt sind.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen On Error Resume Next und On Error GoTo? On Error Resume Next ignoriert Fehler und fährt mit dem nächsten Befehl fort, während On Error GoTo zu einem spezifischen Fehlerhandler springt.

2. Wie kann ich die Fehlerbehandlung aufheben? Verwende On Error GoTo 0, um die Fehlerbehandlung zurückzusetzen und wieder normale Fehlerbehandlungsmechanismen zu aktivieren.

3. Warum funktioniert meine Fehlerbehandlung nicht? Stelle sicher, dass die Fehlerbehandlung am Anfang deines Makros korrekt implementiert ist und überprüfe, ob die Anweisung Application.EnableEvents den Fehler möglicherweise beeinflusst.

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