AW: Makro zum Seiten Drucken, wenn in Zellen Zahl enthalten
17.10.2024 15:21:25
UweD
Hallo nochmal
So?
Public BlattIndex As Integer
Public Arr() As String
Sub Drucken()
Dim i As Integer, WF
Set WF = WorksheetFunction
'Info: IsText() gibt es nur als Worksheetfunction, während IsNumeric() als VBA Funktion existiert
'Deckblatt immer drucken
ReDim Arr(0) ' Initialisiere Array und füge das Deckblatt hinzu
Arr(0) = Sheets("Innentüren").Name
BlattIndex = 1 ' Startindex für weitere Blätter
For i = 3 To ThisWorkbook.Sheets.Count
With Sheets(i)
Select Case .Name
Case "Stückliste HDF"
'wenn in einer der Zellen von A7:A22 eine Zahl, dann sollte der Bereich A1:R33 gedruckt werden.
If WF.Count(.Range("A7:A22")) > 0 Then
.PageSetup.PrintArea = "A1:R33"
AddArr (.Name)
End If
Case "Stückliste Kiefer"
'wenn in einer der Zellen von A7:A22 eine Zahl, dann sollte der Bereich A1:S33 gedruckt werden.
If WF.Count(.Range("A7:A22")) > 0 Then
.PageSetup.PrintArea = "A1:S33"
AddArr (.Name)
End If
Case "Stückliste Verkleidungen"
'wenn in Zelle A7 eine Zahl, dann sollte der Bereich A1:O33 gedruckt werden,
'wenn aber zusätlich in Zelle B39 ein Text
'oder in M39 eine Zahl steht, dann sollte der Bereich A1:O65 gedruckt werden.
If IsNumeric(.Range("B7")) Then
.PageSetup.PrintArea = "A1:O33"
If WF.IsText(.Range("B39")) Or IsNumeric(.Range("M39")) Then
.PageSetup.PrintArea = "A1:O65"
End If
AddArr (.Name)
End If
Case "Stückliste Zarge"
'wenn in Zelle A8 eine Zahl, dann sollte der Bereich A1:O33 gedruckt werden,
'wenn aber zusätlich in Zelle B40 ein Text, dann sollte der Bereich A1:O65 gedruckt werden.
If IsNumeric(.Range("B8")) Then
.PageSetup.PrintArea = "A1:O33"
If WF.IsText(.Range("B40")) Then
.PageSetup.PrintArea = "A1:O65"
End If
AddArr (.Name)
End If
Case "Stückliste Stockstücke"
'wenn in Zelle A7 eine Zahl, dann sollte der Bereich A1:R33 gedruckt werden,
'wenn aber zusätzlich in Zelle B39 ein Text
'oder in Zelle O39 eine Zahl, dann sollte der Bereich A1:R65 gedruckt werden.
If IsNumeric(.Range("A7")) Then
.PageSetup.PrintArea = "A1:R33"
If WF.IsText(.Range("B39")) Or WF.IsNumeric(.Range("O39")) Then
.PageSetup.PrintArea = "A1:R65"
End If
AddArr (.Name)
End If
Case Else
'mach nix
End Select
End With
Next i
' Blätter in der Druckvorschau anzeigen
Sheets(Arr).PrintPreview
End Sub
Private Sub AddArr(BLName)
ReDim Preserve Arr(BlattIndex)
Arr(BlattIndex) = BLName
BlattIndex = BlattIndex + 1
End Sub
LG UweD