ich hab schon mal einen Forumsbeitrag aufgemacht, für ein Makro zum Drucken bestimmter Seiten wenn in Zellen ein Inhalt steht.
Der wurde aber geschlossen, weil er gelöst war, jetzt kann ich nichts mehr fragen und wollte aber von dem Code doch noch was umschreiben. Kenn mich aber mit VBA nicht aus und habs mit rumprobieren selber auch nicht hinbekommen :D
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 A39 eine Zahl
'oder in M39 eine Zahl steht, dann sollte der Bereich A1:O65 gedruckt werden.
If IsNumeric(.Range("A7")) Then
.PageSetup.PrintArea = "A1:O33"
If IsNumeric(.Range("A39")) 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 A40 eine Zahl, dann sollte der Bereich A1:O65 gedruckt werden.
If IsNumeric(.Range("A8")) Then
.PageSetup.PrintArea = "A1:O33"
If IsNumeric(.Range("A40")) 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 A39 eine Zahl
'oder in Zelle O39 eine Zahl, dann sollte der Bereich A1:R65 gedruckt werden.
If IsNumeric(.Range("A7")) Then
.PageSetup.PrintArea = "A1:R33"
If IsNumeric(.Range("A39")) Or 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
Der Code sagt, dass das erste Tabellenblatt nicht gedruckt wird, das zweite das Deckblatt sozusagen wäre und da alles gedruckt wir und ab dem dritten bestimmte Bedingungen. Jetzt möchte ich es gerne umschreiben, dass beim Deckblatt, dem zweiten Tabellenblatt nicht alles, sondern nur der Bereich A1:L29 gedruckt wird, weil ich daneben ab Zelle N4 eine Legende reingeschrieben hab, diese möchte ich aber nicht gedruckt haben.
Kann mir jemand helfen, den Code so umzuschreiben?
Vielen dank schon mal im voraus.
Gruß Sebastian