Seitenumbruch in VBA variable halten

Bild

Betrifft: Seitenumbruch in VBA variable halten
von: JayLen
Geschrieben am: 31.03.2005 12:38:04
Hallo Leute
Ich habe ein Problem. Schaut euch mal meine Beispieldatei an. Ist es irgendwie möglich das der Seitenumbruch nach dem letzten ganzen "Datensatz" vollzogen wird? Es geht vor allem daraum das zu automatisieren. In meiner "richtigen" Datei sind es immer unterschiedlich viele Zeilen pro Datensatz, von daher müsste man das dann immer händlisch machen. Ist es also möglich den Zeilenumbruch nach dem letzten Datensatz durchzuführen den er richtig darstellen kann?
Beispieldatei: https://www.herber.de/bbs/user/20428.xls
Mein Dank ist euch Gewiss
Gruss
JayLen

Bild

Betrifft: AW: Seitenumbruch in VBA variable halten
von: Frank Domke
Geschrieben am: 31.03.2005 17:22:23
Hallo JayLen,
ich habe das für ein Projekt mal geschrieben und für Dich es zusammengestutzt. Es ist trotzdem mehr drin und soll Dir nur veranschaen, wie es gemacht werden kann. Es ist ausbaufähig, sollte Dir aber als Lösungansatz schon brauchbares liefern:
Option Explicit
Public

Sub sÜberträge()
    Dim lngLastRow As Long              ' letzte Zeile des Arbeitsblattes
    Dim lngCurRow As Long               ' aktuelle Zeile
    Dim lngLastMerkRow As Long
    Dim intZeilen As Integer
    Dim lngErsteZeileaufSeite As Long   ' Erste, in die Summe aufzunehmende, Zeile
    Dim blnNewErlZ As Boolean           ' Neuer Absatz beginnt mit Datum!
    Dim Zelle As Range
    Dim intPageCounter As Integer
    lngLastMerkRow = 4
    lngCurRow = 4                       ' Startzeile
    lngErsteZeileaufSeite = 4
    blnNewErlZ = False
    intPageCounter = 0
    lngLastRow = Cells.SpecialCells(xlLastCell).Row
    While lngCurRow <= lngLastRow
        ' Neue Seite ?
        If Rows(lngCurRow).PageBreak = xlPageBreakAutomatic Then
            intPageCounter = intPageCounter + 1
            Application.StatusBar = "Überträge der Seite " & _
                                    intPageCounter & " werden ermittelt, bitte warten ..."
            ' x Leerzeilen vor lngLastMerkRow eintragen
            ' +1 für Leerzeile auf Folgeseite
            intZeilen = 0
            Do While Not (Rows(lngLastMerkRow + intZeilen).PageBreak = _
                          xlPageBreakAutomatic)
                Rows(lngLastMerkRow + intZeilen).Insert
                With Range(lngLastMerkRow + intZeilen & ":" & lngLastMerkRow + intZeilen)
                    .RowHeight = ActiveSheet.StandardHeight    ' 15.75 Zeilenhöhe
                    .VerticalAlignment = xlCenter           ' vertikale Ausrichtung: Mitte
                    With Range("B" & lngCurRow & ":" & "C" & lngCurRow)
                        .IndentLevel = 1                        ' muss wieder gesetzt werden
                    End With
                    .Font.Name = "Times New Roman"     ' Alles auf Times setzen
                    .Font.Size = 12
                    .Font.Bold = False
                    .Font.Italic = False
                    .Font.Underline = xlUnderlineStyleNone
                    .Borders(xlEdgeTop).LineStyle = xlNone
                    .Borders(xlEdgeBottom).LineStyle = xlNone
                End With
                intZeilen = intZeilen + 1
                lngLastRow = lngLastRow + 1
            Loop
            lngErsteZeileaufSeite = lngLastMerkRow + intZeilen
            lngCurRow = lngLastMerkRow + intZeilen + 1
        Else
            If IsDate(Range("A" & lngCurRow)) Then
                ' Neuer Datensatz, also Zeiger neu setzen
                lngErsteZeileaufSeite = lngCurRow
                lngLastMerkRow = lngCurRow
            End If
            lngCurRow = lngCurRow + 1
        End If
    Wend
End Sub

Viel Spaß
Frank.
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Seitenumbruch in VBA variable halten"