AW: Letzte Zeile und letzte Spalte einer Druckseite?
25.06.2009 14:02:25
Jogy
Hi.
Probier mal das:
' Liest Seitenumbrüche aus
Sub UmbruchAuslesen()
Dim myBreak As HPageBreak
Dim ersteZeile As Long
Dim pgEnde() As Long
Dim i As Long
Dim ausGabe As String
Application.ScreenUpdating = False
' Druckbereich muss ein Mal festegelegt werden, sonst ist er leer
' Nimmt hier die belegten Zellen als Druckbereich
If ActiveSheet.PageSetup.PrintArea = "" Then _
ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address
' Erste Zeile auslesen
ReDim pgEnde(1 To 1)
ersteZeile = Range(ActiveSheet.PageSetup.PrintArea).Row
' Seitenanfänge von 2 bis Ende auslesen
For Each myBreak In ActiveSheet.HPageBreaks
pgEnde(UBound(pgEnde)) = myBreak.Location.Row - 1
ReDim Preserve pgEnde(1 To UBound(pgEnde) + 1)
Next
' Ende letzter Seite ist Ende des Druckbereichs
pgEnde(UBound(pgEnde)) = Range(ActiveSheet.PageSetup.PrintArea).Rows.Count - 1 + ersteZeile
' Werte ausgeben
ausGabe = "Seitenzahl: " & UBound(pgEnde) & vbNewLine & _
"Erste Zeile: " & ersteZeile
For i = 1 To UBound(pgEnde)
ausGabe = ausGabe & vbNewLine & "Seite " & i & " endet in Zeile " & pgEnde(i)
Next
Application.ScreenUpdating = True
MsgBox (ausGabe)
End Sub
Das mit der Festlegung des Druckbereichs am Anfang ist noch ein Knackpunkt... wenn der nicht explizit festgelegt ist, dann kann der ausgelesen werden und somit bekäme man nur die Angabe der Seitenende bis zur vorletzten Seite. Wenn Du diese Festlegung nicht oder anders willst, dann bitte kurz melden. Vielleicht hat ja auch noch jemand eine Idee, wie man den anders auslesen kann.
Gruss, Jogy