Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1136to1140
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Drucken - Seitenumbruch in Bereichen verhindern

Drucken - Seitenumbruch in Bereichen verhindern
Klaus
Hallo,
ich möchte ein Tabellenblatt per VBA (Knopf) ausdrucken, das sich über mehrere Seiten erstreckt (vertikal). Horizontal passt alles auf eine Seite. Innerhalb des Tabellenblatts habe ich Bereiche (Blöcke (z. B. A4:G23) bzw. Grafiken), innerhalb derer kein Seitenumbruch stattfinden soll. Kann man irgendwie bestimmte Bereiche definieren, in denen kein Seitenumbruch erfolgt und direkt davor umgebrochen wird? Wenn ja, was ist, wenn ein solcher Bereich nicht auf einer Seite Platz findet?
Bitte helft mir weiter.
Vielen Dank,
Klaus
AW: Drucken - Seitenumbruch in Bereichen verhindern
13.02.2010 12:02:58
Nepumuk
Hallo,
Menüleiste - Ansicht - Seitenumbruchsvorschau. Hier kannst du manuell einstellen in welcher Spalte der Umbruch erfolgen soll.
Gruß
Nepumuk
AW: Drucken - Seitenumbruch in Bereichen verhindern
13.02.2010 12:08:47
Klaus
Hallo Nepumuk,
danke für deine Hilfe. Mein Problem ist, dass die Bereiche, die nicht getrennt werden sollen dynamisch erstellt werden. Sie ergeben sich aus Berechnungen, die unterschiedlich viel Platz bei den Ergebnissen brauchen. Nach der Berechnung sollte ich einen solchen Ergebnisbereich als "nicht teilbar" schützen. Geht so etwas dynamisch via VBA ohne dass händisch über die Seitenumbruchsvorschau Anpassungen notwendig sind?
Danke für deine Hilfe,
Klaus
Anzeige
AW: Drucken - Seitenumbruch in Bereichen verhindern
13.02.2010 13:37:27
Nepumuk
Hallo,
natürlich kannst du "manuelle" Seitenumbrüche auch per VBA einfügen.
Gruß
Nepumuk
AW: Drucken - Seitenumbruch in Bereichen verhindern
13.02.2010 16:09:09
Klaus
Hallo Nepumuk,
danke für den Hinweis. Ich habe aber noch ein Problem. Die Berechnungen liefern mehrere Blöcke, die unterschiedliche Höhen haben (bis zu 30 Blöcken mit verschiedener Anzahl an Zeilen (zwischen 6 und 30 Zeilen). Nachdem die Blöcke gefüllt sind sieht es etwa wie folgt aus:
Range(A1:G23) mit Daten
2 Leerzeilen
Range(A26:G37) mit Daten
2 Leerzeilen
Range(A40:G68) mit Daten
...
Der Seitenumbruch soll nicht direkt vergeben werden, sondern wenn gedruckt wird bzw. auf die Seitenumbruchvorschau gewechselt wird, so soll Excel die Seitenumbrüche festlegen, allerdings soll innerhalb der gefüllten Bereiche kein Umbruch vorkommen. Diese Bereiche sollen vor einem Umbruch geschützt werden. Im obigen Fall müsste der komplette dritte Block auf die zweite Seite rutschen. Ist so etwas möglich?
Danke für deine Unterstützung,
Klaus
Anzeige
AW: Drucken - Seitenumbruch in Bereichen verhindern
13.02.2010 16:40:07
Nepumuk
Hallo,
soll der Umbruch immer zwischen zwei Leerzeilen sein? Der erste also in zwischen 24 und 25 der zweite zwischen 38 und 39?
Gruß
Nepumuk
AW: Drucken - Seitenumbruch in Bereichen verhindern
13.02.2010 16:45:30
Klaus
Hallo Nepumuk,
es sollen immer soviel Blöcke wie möglich auf eine Seite. D. h. in dem geschilderten Beispiel soll nur ein Umbruch (direkt vor Zeile 40) sein, sodass der dritte Block auf der zweiten Seite landet. Die ersten beiden Blöcke sollen auf der ersten Seite sein. Wenn Excel die Seitenumbrüche im Beispiel ohne Eingriffe vergibt, dann wird der dritte Block gespalten (bei mir nach Zeile 52).
Hilft dir diese Info weiter?
Gruß,
Klaus
Anzeige
AW: Drucken - Seitenumbruch in Bereichen verhindern
13.02.2010 18:01:46
Nepumuk
Hallo,
mal so auf die schnelle. Die Seitenumbrüche hat der Teufel erfunden um uns zu ärgern.
Public Sub Automatic_Pagebreaks()
    Dim lngIndex As Long, lngBreakRow As Long, lngRow As Long
    Dim blnAgain As Boolean
    Application.ScreenUpdating = False
    ActiveWindow.View = xlPageBreakPreview
    With Tabelle1
        Do
            blnAgain = False
            For lngIndex = 1 To .HPageBreaks.Count
                lngBreakRow = .HPageBreaks(lngIndex).Location.Row
                If Not IsEmpty(.Rows(lngBreakRow).Cells(1).Value) Then
                    lngRow = .Cells(lngBreakRow, 1).End(xlUp).Row
                    If lngRow = 1 Then
                        MsgBox "Kann Seitenumbruch nicht erstellen."
                        Exit Sub
                    Else
                        Set .HPageBreaks(lngIndex).Location = .Cells(lngRow, 1).Offset(-1)
                        blnAgain = True
                        Exit For
                    End If
                End If
            Next
        Loop Until Not blnAgain
    End With
    ActiveWindow.View = xlNormalView
    Application.ScreenUpdating = True
End Sub

Gruß
Nepumuk
Anzeige
AW: Drucken - Seitenumbruch in Bereichen verhindern
13.02.2010 20:02:29
Klaus
Hallo Nepumuk,
wunderbar - das ist eine tolle Idee! Es funktioniert einwandfrei, außer wenn ein Block länger als eine Seite ist - das führt zu einer Endlosschleife, so glaube ich zumindest. Hast du noch eine Idee, um auch solche Blöcke zuzulassen? Bei solchen Blöcken muss dann innerhalb des Blocks umgebrochen werden.
Vielen Dank für deine tolle Unterstützung,
Klaus
AW: Drucken - Seitenumbruch in Bereichen verhindern
13.02.2010 20:09:55
Nepumuk
Hallo,
das wird mir zu aufwendig, ich hab für das bisschen Code schon fast eine Stunde gebraucht, denn wie schon geschrieben, das PageBreak-Objekt hat der Teufel erfunden. Eventuell hat ja jemand anderes Lust dazu.
Gruß
Nepumuk
Anzeige
AW: Drucken - Seitenumbruch in Bereichen verhindern
13.02.2010 20:53:34
Klaus
Hallo Nepumuk,
alles klar. Vielleicht findet sich sonst jemand im Forum, der mir weiterhelfen kann. Ich werde deinen Code nehmen und versuchen, ob ich das noch erweitern kann.
Vielen, vielen Dank für deine Hilfe und ein schönes Wochenende,
Klaus
AW: Drucken - Seitenumbruch in Bereichen verhindern
14.02.2010 13:16:44
Reinhard
Hallo Klaus,
teste mal ob deine Blöcke sauber und komplett angezeigt werden, besonders die einzeiligen oder kurzen Blöcke.
Anstatt MsgBox kannste auch
.Cells(n+1,10)=von(n)
.Cells(n+1,11)=bis(n)
benutzen.
Sub Druck()
Dim Von(1000) As Long, Bis(1000) As Long, N As Long, Anz As Long
Dim Z As Long
With Worksheets("Tabelle1")
Von(0) = 1
Do
If .Cells(Von(Anz) + 1, 1)  "" Then
Bis(Anz) = Cells(Von(Anz), 1).End(xlDown).Row
Else
Bis(Anz) = Von(Anz)
End If
Anz = Anz + 1
Von(Anz) = Cells(Bis(Anz - 1), 1).End(xlDown).Row
If Von(Anz) > .Cells(Rows.Count, 1).End(xlUp).Row Then Exit Do
Loop While 1
For N = LBound(Von) To Anz - 1
MsgBox Von(N) & " - " & Bis(N)
Next N
End With
End Sub

Gruß
Reinhard
Anzeige
AW: Drucken - Seitenumbruch in Bereichen verhindern
15.02.2010 08:00:24
Klaus
Hallo Reinhard,
danke für deine Hilfe. Das Erkennen der Blöcke funktioniert gut. Damit kann ich auch Seitenumbrüche setzen.
Danke an Nepumuk und dich für eure Hilfe,
Klaus

41 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige