Mit BeforePrint veranlasse ich Excel erst dazu, einige Formatierungen vorzunehmen, ein Blatt auszublenden, danach wieder alles Rückgängig machen.
Das ganze funktioniert so:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Static wirklichDrucken As Boolean 'Semaphore
Dim wks1 As Worksheet, wks2 As Worksheet
If Not wirklichDrucken Then
Cancel = True
wirklichDrucken = True
Application.ScreenUpdating = False
Call VorDruck
ThisWorkbook.PrintOut
Call NachDruck
Else
wirklichDrucken = False
End If
Application.ScreenUpdating = True
End Sub
Sub VorDruck()
Dim wks1 As Worksheet, wks2 As Worksheet
Set wks1 = Worksheets("Zusammenfassung")
Set wks2 = Worksheets("Abrechnung")
'Zellenfarbe entfernen
wks1.Range("F12:I15").Interior.ColorIndex = xlNone
wks1.Range("B21").Interior.ColorIndex = xlNone
wks1.Range("B22:D22").Interior.ColorIndex = xlNone
wks1.Range("H21:H22").Interior.ColorIndex = xlNone
wks1.Range("G23").Interior.ColorIndex = xlNone
wks1.Range("A42").Interior.ColorIndex = xlNone
wks1.Range("B45:B46").Interior.ColorIndex = xlNone
wks2.Range("C6:C9").Interior.ColorIndex = xlNone
wks2.Range("C11").Interior.ColorIndex = xlNone
Worksheets("Hilfe").Visible = False
End Sub
Sub NachDruck()
Dim wks1 As Worksheet, wks2 As Worksheet
Set wks1 = Worksheets("Zusammenfassung")
Set wks2 = Worksheets("Abrechnung")
' 'Zellenfarbe setzen
With wks1.Range("F12:I15").Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
With wks1.Range("B21").Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
With wks1.Range("B22:D22").Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
With wks1.Range("H21:H22").Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
With wks1.Range("G23").Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
With wks1.Range("A42").Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
With wks1.Range("B45:B46").Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
With wks2.Range("C6:C9").Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
With wks2.Range("C11").Interior
.ColorIndex = 36
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Worksheets("Hilfe").Visible = True
End Sub
Funzt auch sehr gut ! ABER:
Ein findiger User hat unter Seitenansicht auf Drucken.. gecklickt. Nun ruft Excel natürlich nochmal BeforePrint auf und somit verhadert sich Excel. Wie kann ich das Problem umgehen?
Danke
Liebe Grüsse
Thomas