Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1056to1060
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

Schwierig Seitenumbruch

Schwierig Seitenumbruch
11.03.2009 10:42:54
walli
Guten Morgen,
ich habe einen variablen Bereich, den ich hiermit festlege:
ActiveSheet.Range(Cells(z + 1, 1), Cells(z + 1, 1)).Select
ActiveSheet.Range(Cells(z + 1, 1), Cells(z + 9, 12)).Select
wenn in diesem Bereich:
ActiveSheet.Range(Cells(z + 1, 1), Cells(z + 9, 12)).Select
ein Seitenumbruch sein sollte,
sollte der Seitenumbruch 2 Zeilen nach oben versetzt werden und
zwar ausgehend hiervon:
ActiveSheet.Range(Cells(z + 1, 1), Cells(z + 1, 1)).Select
ich weiß nicht wie ich das hinkriegen soll,
mfg walli

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schwierig Seitenumbruch
11.03.2009 18:09:51
fcs
Hallo walli,
geht etwa wie folgt.
Die Zeilen mit .Select am Ende kannst du ggf. weglassen, es sei den du willst mit dem selektierten Bereich irgendetwas machen.
Gruß
Franz

Sub test()
Dim rngBereich As Range, z As Long, Zeile1 As Long, Zeile2 As Long, Zeile As Long
Dim wks As Worksheet, bolSeitenwechsel As Boolean
z = 47 'Testwert
Set wks = ActiveSheet
ActiveSheet.Range(Cells(z + 1, 1), Cells(z + 1, 1)).Select 'ggf. überflüssig
Set rngBereich = ActiveSheet.Range(Cells(z + 1, 1), Cells(z + 9, 12))
Zeile1 = rngBereich.Row
Zeile2 = Zeile1 + rngBereich.Rows.Count - 1
Wiederholen:
'Prüfen, ob Horizontaler Seitenwechsel im Bereich. Alle im Bereich vorhandenen manuellen _
Seitenwechsel werden entfernt.
bolSeitenwechsel = False
For Zeile = Zeile1 + 1 To Zeile2
If wks.Cells(Zeile, 1).EntireRow.PageBreak = xlPageBreakManual Then
wks.Cells(Zeile, 1).EntireRow.PageBreak = xlPageBreakNone
GoTo Wiederholen
ElseIf wks.Cells(Zeile, 1).EntireRow.PageBreak = xlPageBreakAutomatic Then
bolSeitenwechsel = True
End If
Next
If bolSeitenwechsel = True Then
wks.Cells(z + 1, 1).Offset(-2, 0).EntireRow.PageBreak = xlPageBreakManual
End If
rngBereich.Select 'ggf. überflüssig
End Sub


Anzeige
Leider noch nicht gelöst, Seitenumbruch
12.03.2009 14:14:26
walli
Hallo Franz,
danke für die Unterstützung, leider klappt das mit meinem Makro nicht.
Habe mal mein Druckmakro angefügt:

Private Sub CommandButton8_Click()
Dim s
Dim z As Long
z = Range("A2").End(xlDown).Row
ActiveSheet.Range(Cells(2, 1), Cells(z, 30)).Select
With ActiveSheet.PageSetup
.PrintArea = Range(Cells(2, 1), Cells(z, 30)).Address
.PrintTitleRows = "$1:$2"
.PrintTitleColumns = ""
.RightHeader = "&""Arial,Fett"" "
.LeftFooter = "&""Arial,Fett""&8&P   von  &N"
.CenterFooter = " "
.RightFooter = "&""Arial,Fett""&8 &F  &D  &T"
.LeftMargin = Application.InchesToPoints(0.01)
' .RightMargin = Application.InchesToPoints(0.01)
' .TopMargin = Application.InchesToPoints(0.4)
' .BottomMargin = Application.InchesToPoints(0.3)
'  .HeaderMargin = Application.InchesToPoints(0.01)
'  .FooterMargin = Application.InchesToPoints(0.01)
''' .Orientation = xlPortrait                   ' für Hochformat
' .Zoom = 63
.Orientation = xlLandscape                ' für Querformat
' .Zoom = False                 'Anpassen
'---------------- damit wird auf Anpassen gestellt -----------
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub


vielleicht kannst Du mir damit helfen ?
mfg walli

Anzeige
Bitte noch mal schauen !
13.03.2009 11:50:44
walli
Hallo Franz oder auch wenn jemand anders die Lösung
hat, bitte nochmal schauen,
habe die ganze Nacht rumgedockert leider ohne Erfolg,
danke im voraus,
mfg walli
habe was gefunden aber
13.03.2009 12:06:01
walli
Hallo Franz,
habe jetzt z= 244 geändert, da die normal beschriebenen Zellen bis
244 belegt sind, danach kommt, wenn der Rahmen reinkopiert wird noch
9 Zeilen hinzu.
Wenn also der Zeilenumbruch innerhalb der Zeilen
243 bis plus 9 also innerhalb 243 bis 252 liegt soll der Zeilenumbruch
2 Zeilen nach oben gesetzt werden also auf 241.
Hoffentlich habe ich es vernünftig geschildert, die Zeilen plus sind
ja nicht immer da, das heißt ich kopiere da etwas rein, wenn nötig.
mfg walli
Anzeige
AW: habe was gefunden aber
13.03.2009 13:11:42
fcs
Hallo walli,
hier jetzt mal eine Anpassung, auf Wunsch (MsgBox) den Seitenwechsel prüft und ggf. anpasst.
Im Moment wird die Seitenvorschau angezeigt. Das muss du dann anpassen wenn alles korrekt klappt.
Das Makro ist relativ langsam, wie fast immer, wenn man per VBA an den Seitenwechseln Prüfungen/Änderungen vornimmt. Excel muss dann immer relativ viel neu berechnen.
Gruß
Franz

Private Sub CommandButton8_Click()
Dim s, bolPruefen As Boolean
Dim Z As Long
If MsgBox("Seitenwechsel prüfen?", vbYesNo, "Druckvorbereiten") = vbYes Then
bolPruefen = True
End If
Application.ScreenUpdating = False
Z = Range("A2").End(xlDown).Row
ActiveSheet.Range(Cells(2, 1), Cells(Z, 30)).Select
With ActiveSheet.PageSetup
.PrintArea = Range(Cells(2, 1), Cells(Z, 30)).Address
.PrintTitleRows = "$1:$2"
.PrintTitleColumns = ""
.RightHeader = "&""Arial,Fett"" "
.LeftFooter = "&""Arial,Fett""&8&P   von  &N"
.CenterFooter = " "
.RightFooter = "&""Arial,Fett""&8 &F  &D  &T"
.LeftMargin = Application.InchesToPoints(0.01)
' .RightMargin = Application.InchesToPoints(0.01)
' .TopMargin = Application.InchesToPoints(0.4)
' .BottomMargin = Application.InchesToPoints(0.3)
'  .HeaderMargin = Application.InchesToPoints(0.01)
'  .FooterMargin = Application.InchesToPoints(0.01)
''' .Orientation = xlPortrait                   ' für Hochformat
' .Zoom = 63
.Orientation = xlLandscape                ' für Querformat
' .Zoom = False                 'Anpassen
'---------------- damit wird auf Anpassen gestellt -----------
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With
If bolPruefen = True Then
Call Seitenwechsel(ZeileLetzte:=Z, AnzahlZeilen:=9, ZeilenOberhalb:=2)
'oder      Call Seitenwechsel(ZeileLetzte:=Z + 9, AnzahlZeilen:=9, ZeilenOberhalb:=2)
End If
Application.ScreenUpdating = True
ActiveWindow.SelectedSheets.PrintPreview
'    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
Sub Seitenwechsel(ZeileLetzte As Long, AnzahlZeilen As Long, Optional ZeilenOberhalb As Long =  _
0)
'ZeileLetzte=Letzte Zeile des Druckbereichs
'AnzahlZeilen = Anzahl Zeilen innerhalb derer am Ende kein Seitenwechsel sein darf
Dim Zeile1 As Long, Zeile2 As Long, Zeile As Long
Dim wks As Worksheet, bolSeitenwechsel As Boolean
Set wks = ActiveSheet
Zeile1 = ZeileLetzte - AnzahlZeilen + 1
Zeile2 = ZeileLetzte
Wiederholen:
'Prüfen, ob Horizontaler Seitenwechsel im Bereich. Alle im Bereich vorhandenen manuellen _
Seitenwechsel werden entfernt.
bolSeitenwechsel = False
For Zeile = Zeile1 + 1 To Zeile2
If wks.Cells(Zeile, 1).EntireRow.PageBreak = xlPageBreakManual Then
wks.Cells(Zeile, 1).EntireRow.PageBreak = xlPageBreakNone
GoTo Wiederholen
ElseIf wks.Cells(Zeile, 1).EntireRow.PageBreak = xlPageBreakAutomatic Then
bolSeitenwechsel = True
End If
Next
If bolSeitenwechsel = True Then
wks.Cells(Zeile1, 1).Offset(-ZeilenOberhalb, 0).EntireRow.PageBreak = xlPageBreakManual
End If
End Sub


Anzeige
Klasse -)
13.03.2009 14:01:17
walli
Hallo Franz,
herzlichen Dank für die Unterstützung, es funktioniert.
Schönes Wochenende,
mfg walli

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige