Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Prüfung auf Seitenumbruch
#1
Hallo zusammen,
ich habe folgendes Problem:

Zelle A1 bis A3 seien verbunden, Zellen B1 bis B3 nicht. Bei entsprechender Höhe der Zeilen kann es nun vorkommen, dass ein automatischer Seitenumbruch bspw. zwischen Zeile 2 und 3 liegt und damit mitten durch Zelle A1 (Verbundzelle aus A1 bis A3) läuft. Ich möchte mit einem Makro prüfen, ob innerhalb einer verbundenen Zelle ein Seitenumbruch verläuft. Hintergrund ist der, dass das Dokument natürlich weitaus umfachreicher ist, und ich mittels eines Makros prüfen möchte, ob beim Ausdrucken eine verbundene Zelle "zerschnitten" wird.

Ich stelle mir das in der Art vor, dass ich eine Int Variable mit einem Loop jeweils um 1 erhöhe und in jeder Zeile prüfe, ob eine Zelle eine verbundene Zelle ist (mittels Cells().mergecells=true/false) und falls ja, ob ein Seitenumbruch zwischen den einzelnen Zellen des Verbundes vorliegt. Leider kann ich hierzu nichts finden, hat jemand eine Idee ob das überprüfbar ist? Optimal wäre es das ganze in einer If Abfrage zu verpacken und bei positiver Rückmeldung einen Seitenumbruch vor der verbundenen Zelle einzufügen. Bis auf die besagte Prüfung traue ich mir das alles zu.


Danke im Voraus, Gruß
Antworten Top
#2
Hallo,

es gab vor wenigen Tagen ein ganz ähnliche Frage in einem der Nachbatforen. Damals hatte ich den folgenden Code entwickelt:


Code:
Sub T1()
Dim WS As Worksheet: Set WS = ActiveSheet
Dim HPb As HPageBreak
WS.ResetAllPageBreaks
With WS.PageSetup

hp = 1
r = Range(.PrintArea).Row
lr = Range(.PrintArea).Row + Range(.PrintArea).Rows.Count
   For i = Range(.PrintArea).Row + 3 To lr
       If Cells(i, 3).MergeArea.Count > 2 Or i = lr Then
           If WS.HPageBreaks(hp).Location.Row < i Then
            WS.HPageBreaks.Add Rows(r)
               hp = hp + 1
           End If
           r = i
           i = i + 2
       End If
   Next i
End With
End Sub


Diese Zeile müßtest Du (vielleicht) anpassen:


Code:
If Cells(i, 3).MergeArea.Count > 2


mfg
Antworten Top
#3
Danke zunächst einmal für die Antwort. Leider verstehe ich aufgrund meines sehr beschränkten vba Wissens große Teile des Codes nicht.

Was ist hp? Verstehe ich das richtig, dass du mit der For-Schleife im Druckbereich überprüfst, ob in Spalte 3 mehr als 2 Zellen verbunden sind? Und falls dem so ist bzw. die Schleife beim maximalen Wert lr angekommen ist, wird geprüft, ob .. die Position eines/des(?) Seitenumbruchs kleiner des Zählers der Schleife ist? Du merkst, ich bin leider nicht in der Lage den Code entsprechend zu deuten und umsetzem, gerne lese ich mich aber auch ein falls du Stichwörter hast die ich googlen könnte?

Gruß
Antworten Top
#4
Um vllt einmal meine Gedankengänge offenzulegen, so "einfach" habe ich mir das vorgestellt, ist es aber anscheinend nicht:


Code:
Sub Rechteck8_KlickenSieAuf()
Dim zeile As Integer
    zeile = 10
    Do Until Cells(zeile, 1).Value = ""
        If Cells(zeile, 1).MergeCells = True Then
            If ActiveSheet.HPageBreaks.Location = Cells(zeile, 1) Then
                ActiveSheet.HPageBreaks.Add before:=Cells(zeile, 1)
            End If
        End If
        zeile = zeile + 1
    Loop
End Sub

Zeile 6-8 ist der Part, bei dem ich nicht weiß wie ich vorgehen soll. Ich möchte damit, wie beschrieben, erreichen, dass die Zellen, sofern sie verbundene Zellen sind, auf einen horizontalen Seitenumbruch überprüft werden. Heißt das ich müsste in einem weiteren Schritt schauen, wieviele Zellen in einem Verbund vorliegen um dann zu prüfen, ob ein Seitenumbruch zwischen 2en der Zellen vorliegt? Aktuell steht in meinem Code Beispiel oben ja lediglich .Location = Cells(Zeile,1), da ich das Gefühl hatte hiermit zum Ausdruck bringen zu können was mir vorschwebt (wohlwissend, dass dieser Teil des Codes nicht funktioniert).
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste