Kann Excel Seitenende selbst erkennen?

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Kann Excel Seitenende selbst erkennen?
von: Drazen
Geschrieben am: 25.02.2005 21:51:07
Hallo,
ich drucke über ein UF ein fertiges Rechnungsformular aus. Mit folgendem Code setzte ich dann noch MfG usw. dazu:
Dim xZeile As Long
xZeile = Range("A65536").End(xlUp).Row
Cells(xZeile + 7, 2) = "Mit freundlichen Grüssen"
Cells(xZeile + 7, 2).Select
With Selection
.Font.bold = True
.Font.Name = "Arial"
.Font.Size = 11
.HorizontalAlignment = xlLeft
End With
Cells(xZeile + 8, 2) = "XXX GmbH London"
Cells(xZeile + 8, 2).Select
With Selection
.Font.bold = True
.Font.Name = "Arial"
.Font.Size = 11
.HorizontalAlignment = xlLeft
End With
Das klappt auch prima, er nimmt die letzte benutzte Zeile und gibt nach 7 Zellen das gewünschte ein, was aber wenn es zu viele Zeilen werden und dann das "Mit freundlichen Grüssen" auf Seite 1 ist und die Firma auf Seite 2, ich muss noch hinzufügen, die Zeilen davor werden in der grösse angepasst, haben also variable Höhen(Zeilenumbruch). Excel müsste also erkennen wann ein Seitenumbruch kommt und diesen dann clever umgehen, kann man dies irgedwie erreichen?

Grüsse
Drazen

Bild

Betrifft: ...ausgegraben
von: Erich M.
Geschrieben am: 25.02.2005 22:09:27
Hallo Drazen,
habe das mal aus dem Netz, aber noch nie so richtig bisher eingesetzt:
https://www.herber.de/bbs/user/18832.zip
mfg
Erich
http://www.toolex.de
Bild

Betrifft: AW: ...ausgegraben
von: Drazen
Geschrieben am: 25.02.2005 22:22:05
Hallo,
nicht schlecht, ist aber nicht so richtig das was ich wollte, Du hast damit aber doch meine Frage beantwortet, es ist also nicht möglich, ich lass zur Sicherheit mal den Thread auf offen, vieleicht ist ja jemandem was cooles dazu eingefallen, vielen Dank für deine schnelle Hilfe.
Grüsse
Drazen
Bild

Betrifft: AW: ...ausgegraben
von: Bert
Geschrieben am: 25.02.2005 22:33:40
Was soll denn passieren, wenn ein Makro feststellt, dass Gruß und Firma nicht mehr
auf die erste Seite passt?
Bert
Bild

Betrifft: AW: ...ausgegraben
von: Drazen
Geschrieben am: 25.02.2005 22:38:00
Hallo Bert, mein Retter,
am besten wäre es wenn es dann diese "xZeile + 8,.." dementsprechend ändern könnte, ich hab viel über alle möglichen verzweigungen nachgedacht, aber ich hab ehrlich gesagt keine Ahnung wie Excel überhaupt weiss wann es einen Seitenumbruch machen soll, wüsste ich das, dann hätte ich ein Ereignis an das ich mich knüpfen könnte..
Grüsse
Drazen
Bild

Betrifft: AW: ...ausgegraben
von: Josef Ehrensberger
Geschrieben am: 25.02.2005 23:32:55
Hallo Drazen!
Vielleicht ein Ansatz!

Sub Page_Breaks()
Dim xZeile As Long
Dim breaks1 As Integer, breaks2 As Integer
'letzte Zeile feststellen
xZeile = Range("A65536").End(xlUp).Row
'Anzahl der Zeilenumbrüche ermitteln
breaks1 = ActiveSheet.HPageBreaks.Count
'Zusatztext eibfügen
Cells(xZeile + 7, 2) = "Mit freundlichen Grüssen"
Cells(xZeile + 8, 2) = "XXX GmbH London"
   With Range(Cells(xZeile + 7, 2), Cells(xZeile + 8, 2))
   .Font.Bold = True
   .Font.Name = "Arial"
   .Font.Size = 11
   .HorizontalAlignment = xlLeft
   End With
'Neuerlich Anzahl der Umbrüche ermitteln
breaks2 = ActiveSheet.HPageBreaks.Count
   If breaks1 = breaks2 Then 'Wenn Anzahl der Umbrüche gleichgeblieben
   MsgBox "Alles OK"
   Else                      'Sonst
   MsgBox "Schei...."
   ActiveSheet.HPageBreaks.Add Before:=Cells(Int((xZeile + 8) / 3) * 2, 1)
   End If
End Sub


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Bild

Betrifft: AW: ...ausgegraben
von: Bert
Geschrieben am: 25.02.2005 23:44:31
Problem, wenn noch kein Umbruch vorhanden ist, kann man zunächst mal nicht feststellen,
wo dieser denn wohl wäre. Man könnte weiter unten einen dummeintarg in eine Zelle
machen(und später wieder löschen)um so festzustellen, in welcher Zeile der Umbruch
erfolgt.
Ich weiß nun aber noch immer nicht was passieren soll, wenn festgestellt wird, der Umbruch würde in Zeile 55 erfolgen, dein Text + Gruß + Firma würde aber nicht mit dem geplanten Abstand von 7 Zeilen dort hineinpassen, You know?
Du könntest im Layout auf eine Seite anpassen wählen, das hilft aber nur in kleinen Grenzen.
Bert
Bild

Betrifft: AW: ...ausgegraben
von: Drazen
Geschrieben am: 26.02.2005 00:08:14
Hallo,
ich hab mir das irgendwie so gedacht; "... führe den Code mit dem Einfügen(MFG usw) aus wenn du 1 Zeile vor dem Umbruch bist, ansonsten wieder 8 Zeilen nach Umbruch und nach letzter genutzter Zeile.."
Schön hab ich mir das ausgedacht oder? ;-)
Ich grüble schon lange darüber und mir fällt nix logisches ein.
Grüsse
Drazen
Bild

Betrifft: AW: ...ausgegraben
von: Bert
Geschrieben am: 26.02.2005 00:29:43
Hab ich nicht ganz gerafft. Wenn dein Text bis Zeile 53 geht und der Umbruch in Zeile
55 ist, wo soll dann MfG und Firma stehen?
Bert
Bild

Betrifft: AW: ...ausgegraben
von: Drazen
Geschrieben am: 26.02.2005 00:34:33
Hi Bert,
Also im Falle der Text geht bis 53, Umbruch in 55, dann müsste MFG in mindestens zeile 65 stehen, wenn aber Text bis 42 umbruch dann in 50,(das ist ja jetzt auch schon so).
Ich will halt nur irgendwie die Situation vermeiden :
Text bis 47, dann MFG in 54. dann Umbruch in 55 und dann Firma in 55 also Seite 2

Grüsse
Drazen
Bild

Betrifft: AW: ...ausgegraben
von: Bert
Geschrieben am: 26.02.2005 01:51:23
Sub Druck_anpassen()
Dim lngZ As Long, hpb As Long, pbr As Long, d As Long
lngZ = Cells(Rows.Count, 1).End(xlUp).Row
Cells(lngZ + 7, 2) = "Mit freundlichen Grüßen"
Cells(lngZ + 8, 2) = "Drazen Syndikat"
With Range(Cells(lngZ + 7, 2), Cells(lngZ + 8, 2))
  .Font.Bold = True
  .Font.Name = "Arial"
  .Font.Size = 11
  .HorizontalAlignment = -4131
End With
hpb = ActiveSheet.HPageBreaks.Count
If hpb = 0 Then Exit Sub
pbr = ActiveSheet.HPageBreaks(1).Location.Row
d = pbr - lngZ
If d = 8 Then Rows(lngZ + 1).Insert
End Sub

Bert
Bild

Betrifft: AW: ...ausgegraben
von: Drazen
Geschrieben am: 26.02.2005 12:33:25
Hi Bert,
ich staune immer wieder über Dein logisches Denken, na klar das ist es.
Könnte man das ganze noch irgendwie modifizieren; eventuell mit Select Case oder so, weil:
ich lege ja fest setze mir den Absender 8 Zeilen unterhalb des Textes ein, dein Code sagt '...wenn 8 Zeilen einen PB geben füge eine Zeile ein, dann setzt es automatisch das ganze auf die nächste Seite.
8 Zeilen sind von mir wilkürlich gewählt, aber im Falle von d=8 wäre es eigentlich auch noch möglich das ganze darunterzuquetschen, es müssten also nich diese 8 Zeilen unbedingt eingehalten werden.
Ich bräuchte also eine Select Case Verzweigung die sagt wenn
d ist zwischen 4 und 8 lösche 2 Zeilen und setzte den Absender darunter
d ist grösser als 8 dann mach normal weiter

Wäre so etwas machbar?
Vielen Dank Bert!!!
Grüsse
Drazen

Bild

Betrifft: AW: ...ich habs!!!
von: Drazen
Geschrieben am: 26.02.2005 13:10:57
Hi Bert,
so muss es sein, ich werfe einfach den letzten Eintrag der Liste auf die nächste Seite und schon macht es wieder Sinn,
If d = 8 Then 'Rows(lngZ + 1).Insert
Set ActiveSheet.HPageBreaks(1).Location = Cells(lngZ, 1)
End If
Wäre aber ohne dich nie darauf gekommen, vielen Dank noch mal.
Grüsse
Drazen
Bild

Betrifft: AW: ...ich habs!!!
von: Bert
Geschrieben am: 26.02.2005 13:28:08
Glückwunsch, geht doch!
mfG Bert
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Kann Excel Seitenende selbst erkennen?"