Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Druckbereich

Betrifft: Druckbereich von: Thomas
Geschrieben am: 27.10.2020 10:27:38

Hallo excelfreunde,

ich möchte gern den Druckbereich so einstellen das immer 16 Zeilen auf einem Blatt sind.

Dazu habe ich folgendes Macro "geschrieben".

.PrintTitleRows = "$1:$5"

.PrintArea = ""

For i = 1 To 1

If (Tabelle16.Range("b86") <> "") Then
' MsgBox " Blatt1"
PageSetup.PrintArea = Tabelle16.Range("A1:l101").Address
Exit For
Else
If (Tabelle16.Range("b70") <> "") Then
'MsgBox " Blatt2"
PageSetup.PrintArea = Tabelle16.Range("A1:l85").Address
Exit For
Else
If (Tabelle16.Range("b54") <> "") Then
' MsgBox " Blatt3"
PageSetup.PrintArea = Tabelle16.Range("A1:l69").Address
Exit For
Else
If (Tabelle16.Range("b38") <> "") Then
' MsgBox " Blatt4"
PageSetup.PrintArea = Tabelle16.Range("A1:l53").Address
Exit For
Else
If (Tabelle16.Range("b22") <> "") Then
' MsgBox " Blatt5"
PageSetup.PrintArea = Tabelle16.Range("A1:l37").Address
Exit For
Else
If (Tabelle16.Range("b6") <> "") Then
'MsgBox " Blatt6"
PageSetup.PrintArea = Tabelle16.Range("A1:l21").Address
Exit For
End If
End If
End If
End If
End If
End If
Next

dieses funktioniert soweit auch schon ganz gut.
Leider weiß ich am ende nicht wieviel Seiten gedruckt werden sollen. ( dies ist variabel bis zu 20 Seiten ).

um sicherzugehen müsste ich dies

If (Tabelle16.Range("b22") <> "") Then
'MsgBox " ja5"
PageSetup.PrintArea = Tabelle16.Range("A1:l37").Address
Exit For
Else

noch 14 mal schreiben. Weiß jemand wie ich dies besser ( kürzer ) schreiben könnte?

habt schon mal rechtvielen dank für euer Interesse.

mfg Thomas

Betrifft: habs hinbekommen
von: Thomas
Geschrieben am: 27.10.2020 14:53:20

Hallo excelfreunde,

ich habe es doch hinbekommen.


Dim lngRow As Long
Tabelle16.ResetAllPageBreaks
PageSetup.PrintArea = ""
With Tabelle16
For lngRow = 22 To 100 Step 16 '.UsedRange.Rows.Count Step 17

If (Tabelle16.Cells(lngRow, 2) <> "") Then
' MsgBox " Blatt1"

PageSetup.PrintArea = Tabelle16.Range("A1:L" & lngRow + 15).Address



.HPageBreaks.Add Before:=Cells(lngRow, 2)


Else
Exit For
End If

Next lngRow
End With


mfg thomes

Beiträge aus dem Excel-Forum zum Thema "Druckbereich"