Hallo Leute,
kann mir jemand sagen, warum der ErrorHandler immer ausgeführt wird. die msgbox wird immer dargestellt.
CODE:
Private Sub print_leistungskatalog_Click()
On Error GoTo Errorhandler
Dim pwd As String
pwd = „basti07“
Sheets(„Leistungskatalog“).Unprotect pwd
Range(„B3:G4,B5:E348,F348,G4:G348“).Select
Selection.Interior.ColorIndex = xlNone
Range(„F5:F347“).Select
Selection.Interior.ColorIndex = xlNone
ActiveSheet.PageSetup.PrintArea = „$B$3:blush:G$348“
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Range(„B3:G4,B5:E348,F348,G4:G348“).Select
Selection.Interior.ColorIndex = 36
Range(„F5:F347“).Select
Selection.Interior.ColorIndex = 3
Range(„A1“).Select
Errorhandler:
MsgBox „Es ist ein Fehler beim Drucken des Leistungskatalog aufgetreten“, vbCritical
Call colorBack
Sheets(„Leistungskatalog“).Protect pwd
End
End Sub
Für eure Hilfe bin ich sehr dankbar.
grüße,
Sebastian
kann mir jemand sagen, warum der ErrorHandler immer ausgeführt wird. die msgbox wird immer dargestellt.
Private Sub print\_leistungskatalog\_Click()
Dim pwd As String
On Error GoTo Errorhandler
pwd = "basti07"
Sheets("Leistungskatalog").Unprotect pwd
Range("B3:G4,B5:E348,F348,G4:G348").Interior.ColorIndex = xlNone
Range("F5:F347").Interior.ColorIndex = xlNone
ActiveSheet.PageSetup.PrintArea = "$B$3:blush:G$348"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Range("B3:G4,B5:E348,F348,G4:G348").Interior.ColorIndex = 36
Range("F5:F347").Interior.ColorIndex = 3
Range("A1").Select
_'Hier muss natürlich ein Sprung ans Ende rein.
'VBA-Code wird Zeilenweise ausgeführt.
'Es wird also mit MsgBox fortgefahren.
'Wieso sollte VBA das, was hinter der "ErrorHandler"-Marke kommt, ignorieren?
'Und woher soll es wissen, wann dieser Breich zu Ende ist? Es könnte darunter ja noch Code kommen.
'Abhilfe:
'Noch eine Sprungmarke setzen und von hier aus da hinspringen:_
Goto Ende
Errorhandler:
MsgBox "Es ist ein Fehler beim Drucken des Leistungskatalog aufgetreten", vbCritical
Call colorBack
Sheets("Leistungskatalog").Protect pwd
End
Ende:
_'Hier passiert dann nichts mehr._
End Sub 'print\_leistungskatalog\_Click
Kristian
Achso, eins habe ich vergessen:
Du kannst, wie im Codebeispiel von mir geändert, auf die "Select"s verzichten. Die zweite Variante ist mit der ersten identisch:
Range("F5:F347").Select
Selection.Interior.ColorIndex = 3
Range("F5:F347").Interior.ColorIndex = 3
Das Selektieren der Zelle kostet nur Zeit und führt zu unruhigem Gerappel auf den Arbeitsblatt.
Kristian
Hallo Kristian!
'Hier muss natürlich ein Sprung ans Ende rein.
'VBA-Code wird Zeilenweise ausgeführt.
'Es wird also mit MsgBox fortgefahren.
'Wieso sollte VBA das, was hinter der „ErrorHandler“-Marke
kommt, ignorieren?
'Und woher soll es wissen, wann dieser Breich zu Ende ist? Es
könnte darunter ja noch Code kommen.
'Abhilfe:
'Noch eine Sprungmarke setzen und von hier aus da
hinspringen:
Goto Ende
Ende:
gut zu wissen und vielen dank für deine hilfe.
hat auf anhieb geklappt! 
cu sebastian