HERBERS Excel-Forum - das Archiv

Thema: blätter drucken bei bedingung | Herbers Excel-Forum

blätter drucken bei bedingung
Michael

Um ausschließlich versteckte Blätter zu drucken, die eine Bedingung erfüllen, habe ich _
folgenden Code:

Private Sub CommandButton100_Click()
Dim wks As Worksheet
Application.ScreenUpdating = False
For Each wks In Worksheets
If Not wks.Visible And wks.Cells(2, 26) > 0 Then
wks.Visible = xlSheetVisible
wks.Activate
wks.PrintOut
wks.Visible = xlSheetHidden
End If
Next
Application.ScreenUpdating = True
End Sub

diese blätter müssen im header folgende infos/formatierungen haben, die ich in folgender _
prozedur erzeugen will:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim strBearbeitet As String
Dim strTitel As String
Dim strPNR As String
'Nicht fürs Deckblatt "Kalkulation"
If LCase(Me.ActiveSheet.Name) <> "kalkulation" Then
strTitel = ""
strBearbeitet = ""
strPNR = ""
strTitel = "&8Titel: " & Chr(32) & Sheets("Kalkulation").Range("D8").Value
strBearbeitet = "&8Druckdatum: " & Date
strPNR = "&8PNR: " & Chr(32) & Sheets("Kalkulation").Range("O12").Value
Me.ActiveSheet.Unprotect "****"
Me.ActiveSheet.PageSetup.LeftHeader = strTitel & Chr(13) & strPNR
Me.ActiveSheet.PageSetup.RightHeader = strBearbeitet
Me.ActiveSheet.PageSetup.CenterHeader = "&8Detailkalkulation" & Chr(32) & "&8&A"
Me.ActiveSheet.Protect "****"
'MsgBox Me.ActiveSheet.PageSetup.LeftHeader
End If
End Sub

es werden zwar die betroffenen blätter gedruckt, jedoch erfolgt keine änderung in den headern. nur wenn ich per seitenansicht vorab aufrufe wird der zweite code korrekt ausgeführt.
kann mir jemand da mal nen tip geben, wie das automatisch ablaufen könnte.
vielen, vielen dank

AW: blätter drucken bei bedingung
Lutz

Hallo Michael,
versuche es doch mal mit dem abgeänderten Code.
Option Explicit
Private Sub CommandButton100_Click()
Dim wks As Worksheet
Application.ScreenUpdating = False
For Each wks In Worksheets
If Not wks.Visible And wks.Cells(2, 26) > 0 Then
wks.Visible = xlSheetVisible
wks.Activate
Call Seite_ändern
wks.PrintOut
wks.Visible = xlSheetHidden
End If
Next
Application.ScreenUpdating = True
End Sub

Private Sub Seite_ändern()
Dim strBearbeitet As String
Dim strTitel As String
Dim strPNR As String
'Nicht fürs Deckblatt "Kalkulation"
If LCase(ActiveSheet.Name) <> "kalkulation" Then
strTitel = ""
strBearbeitet = ""
strPNR = ""
strTitel = "&8Titel: " & Chr(32) '& Sheets("Kalkulation").Range("D8").Value
strBearbeitet = "&8Druckdatum: " & Date
strPNR = "&8PNR: " & Chr(32) & Sheets("Kalkulation").Range("O12").Value
ActiveSheet.Unprotect "****"
ActiveSheet.PageSetup.LeftHeader = strTitel & Chr(13) & strPNR
ActiveSheet.PageSetup.RightHeader = strBearbeitet
ActiveSheet.PageSetup.CenterHeader = "&8Detailkalkulation" & Chr(32) & "&8&A"
ActiveSheet.Protect "****"
End If
End Sub
M.f.G. Lutz