AW: Seitenzahl anzeigen in Normalansicht (Hintergrund)
06.07.2004 20:51:14
andre
Hallo Matthias,
probier mal das:
Sub Druckseiteneinrichten()
'code von jörg lorenz <a href="http://www.excel-vba.de/drucken.htm">http://www.excel-vba.de/drucken.htm</a>
'angepasst von andre schau <a href="http://a-schau.de">http://a-schau.de</a>
Dim intI%, intJ%, intK%
Dim SeitenZähler%
Dim WievielteZeile%, WievielteSpalte%
ReDim arrSammler(1)
Dim SeiteLetzteZeile As Long
'Standardmäßig wird bei jeder Seite der Inhalt der linken oberen Zelle
'zurückgegeben. Soll das eine andere sein, müssen die folgenden Werte
'geändert werden.
'Soll z. B. auf der ersten Seite der Inhalt von B4 zurückgegeben werden,
'muß die erste Variable auf 3, die zweite auf 1 gesetzt werden
'(vierte Zeile von oben, zweite Spalte von links).
WievielteZeile = 0
WievielteSpalte = 0
ActiveWindow.View = xlPageBreakPreview
'ActiveSheet.ResetAllPageBreaks
arrSammler(0) = 1
For intI = 1 To ActiveSheet.HPageBreaks.Count
ReDim Preserve arrSammler(intI)
arrSammler(intI) = ActiveSheet.HPageBreaks.Item(intI).Location.Row
Next
SeitenZähler = 0
For intJ = 0 To intI - 1
'aenderung von andre, erst mal nur für seitenanordnung im sheet
'nur untereinander
If intJ + 1 < UBound(arrSammler()) Then
SeiteLetzteZeile = arrSammler(intJ + 1)
Else
'funktioniert nur wenn zelle 65536 (letzte zelle des blattes)
'nicht belegt ist, und wenn spalte a die letzte belegte zelle hat
'wenn nicht bei Cells(Rows.Count, 1).... statt 1 andere spaltennummer
'einrtragen
SeiteLetzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
End If
SeitenZähler = SeitenZähler + 1
Ausführen CInt(arrSammler(intJ)) + _
WievielteZeile, 1 + _
WievielteSpalte, SeitenZähler, SeiteLetzteZeile
Next
For intJ = 1 To ActiveSheet.VPageBreaks.Count
SeitenZähler = SeitenZähler + 1
Ausführen CInt(arrSammler(0)) + _
WievielteZeile, ActiveSheet.VPageBreaks.Item(intJ).Location.Column + _
WievielteSpalte, SeitenZähler
For intK = 1 To intI - 1
SeitenZähler = SeitenZähler + 1
Ausführen CInt(arrSammler(intK)) + _
WievielteZeile, ActiveSheet.VPageBreaks.Item(intJ).Location.Column + _
WievielteSpalte, SeitenZähler
Next
Next
ActiveWindow.View = xlNormalView
End Sub
Sub Ausführen(Zeile As Integer, Spalte As Integer, SeitenZähler As Integer, Optional ByVal SeiteLetzteZeile As Integer)
'optional in subzeile zugefügt von andre, zum eintrag in jede zeile
'originalcodeteile auskommentiert
'eintrag auf der letzten seite nur im ausgefüllten bereich
Dim strAnzeige$
'strAnzeige = Cells(Zeile, Spalte) & " Seite: " & SeitenZähler
'MsgBox strAnzeige
If SeiteLetzteZeile > 0 Then
For i = Zeile To SeiteLetzteZeile
Cells(i, 7) = "Seite: " & SeitenZähler
'Cells(Zeile, 7) = strAnzeige
Next
Else
Cells(Zeile, Spalte) = "Seite: " & SeitenZähler
End If
'ActiveSheet.PageSetup.LeftHeader = strAnzeige
'ActiveSheet.PrintOut from:=SeitenZähler, to:=SeitenZähler
End Sub