ich habe mir ein kleines Macro zusammengebaut welches sicherstellt das auf allen zu druckenden Seiten immer die letzten Zeilen gleich sind. So ähnlich wie Wiederholungzeilen oben, aber halt Ebend nur unten.
Nun muss ich auf der letzten zu druckenden Seite immer leere Zeilen einfügen bis Excel ein neuen Seitenumbruch einfügt.( Blattfüllend ).
dies ist der Macroteil dazu:
'HBreakR = wksKopfzeile.HPageBreaks(i).Location.Row
letzte = wksKopfzeile.Cells(Rows.Count, 1).End(xlUp).Row + 1
wksKopfzeile.Cells(letzte + 1, 1).Select
wksKopfzeile.Range("a" & letzte) = "test"
'ActiveSheet.PageSetup.PrintArea = ""
With wksKopfzeile.PageSetup 'Druckbereich setzen. Sonst findet Excel keine Seitenumbrüche?!
'.Zoom = false
.PrintArea = ""
.PrintArea = "$A$1:$L$" & letzte
.FitToPagesWide = 1
'.PrintArea = "$A$1:$f$220"
End With
'Stop
Set Zelle = wksKopfzeile.Cells(Rows.Count, 1).End(xlUp).Offset(-1, 0)
'HBreakR = wksKopfzeile.HPageBreaks(i).Location.Row
anzHPB = wksKopfzeile.HPageBreaks.Count
'HBreakR = wksKopfzeile.HPageBreaks(i).Location.Row
'Stop
Do
Set Zelle = wksKopfzeile.Cells(Rows.Count, 1).End(xlUp).Offset(-4, 0)
Zelle.EntireRow.Insert shift:=xlDown
'https://www.herber.de/forum/archiv/980to984/983139_Zeile_einfuegen_mit_bestimmter_Hoehe.html
Call ZeileHoehe(4, 24) 'Nur eine Zeile!
'HBreakR = wksKopfzeile.HPageBreaks(i).Location.Row
Loop While wksKopfzeile.HPageBreaks.Count = anzHPB
'Zelle.EntireRow.Delete
Application.CutCopyMode = False
Dim zeilena3
zeilena = wksKopfzeile.Columns(28).Find(What:="kopfzeile", LookAt:=xlWhole, SearchDirection:=xlPrevious).Row
zeilena3 = wksKopfzeile.Columns(28).Find(What:="fußzeile", LookAt:=xlWhole, SearchDirection:=xlPrevious).Row
' Rahmen setzen
letzte = wksKopfzeile.Cells(Rows.Count, 1).End(xlUp).Row
With wksKopfzeile.Range(Cells(zeilena + 1, 1), Cells(zeilena3 - 4, 12)).Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
With wksKopfzeile
letzte = .Cells(Rows.Count, 1).End(xlUp).Row '- 1
.Cells(letzte, 1).EntireRow.Delete
End With
Dies ist der Teil mit dem ich die leeren Zeilen einfüge:
Set Zelle = wksKopfzeile.Cells(Rows.Count, 1).End(xlUp).Offset(-4, 0)
Zelle.EntireRow.Insert shift:=xlDown
Nun möchte ich gern bei den neuen Zeilen eine bestimmte Zeilenhöhe mitgeben.
Dazu habe ich im Netz diese Funktion gefunden:
Function ZeileHoehe(lRow As Long, hRow As Integer)
'https://www.herber.de/forum/archiv/980to984/983139_Zeile_einfuegen_mit_bestimmter_Hoehe.html
'funktion für Zeilenhöhe
Rows(lRow).Insert shift:=xlDown
Rows(lRow).RowHeight = hRow
End Function
Diese wird folgendermaßen aufgerufen.Call ZeileHoehe(4, 24) 'Nur eine Zeile!
Leider bekomme ich diese nicht auf meinen Bedürfnissen angepasst.
Wenn ich es mit
Function ZeileHoehe(lRow As Long, hRow As Integer)
Set zelle = wksKopfzeile.Cells(Rows.Count, 1).End(xlUp).Offset(-4, 0)
zelle.Insert.Insert shift:=xlDown
zelle.Insert.RowHeight = hRow
End Function
Sub mein_versuch()
Dim zelle As Range
Set zelle = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(-4, 0)
'*** Dein Code ***
Call ZeileHoehe(zelle, 24) 'Nur eine Zeile!
'*** Dein Code ***
End Sub
versuche bekomme ich logischerweise eine Fehlermeldung. ( Agrumenttyp unverträglich)
Kann mir jemand dabei behilflich sein?
https://www.herber.de/bbs/user/141785.xlsm
mfg Thomas