Das Clever-Excel-Forum.de - Treffen
... 14.-16. September 2018 im Allgäu ...

variabler Seitenumbruch mittels VBA
#1
Hallo liebe Mituser, liebe Excelgemeinde,

ich hätte da ein kleines Problemchen Wink :

Ich habe eine Tabelle, die aus verschiedenen Analysen besteht. Jede Analyse hat eine verschiedene Anzahl an Zeilengröße. Je nachdem welche Analysen ausgewählt werden, ist der Seitenumbruch mitten in einer Analyse. Diese sollte aber zusammenhängend auf der neuen Seite erscheinen.
Wie kann man einen Variablen Seitenumbruch erstellen, wo nach einer Analyse variable der Seitenumbruch nach Zeile 32, 34 oder nach Zelie 35 passiert?

Bsp:

WCX [ ] Proben auf 10 mg/mL in Milli Q verdünnt [ ] durchgeführt
[ ] ausgewertet


WCX besteht aus 2 Zeilen durchgeführt und ausgewertet. mittendrin ist der Zeilenumbruch. auf der ersten Seite steht noch das durchgeführt und auf der Zweiten ausgewertet. wie kann man vriabel erstellen, dass eine Analyse nicht getrennt wird und komplett auf Seite 2 erscheint?

Vielen dank schonmals un ein schönes WE
Eure twobbi
to top
#2
Hallöchen,

ich nehme an, wenn Dein Seitenumbruch in den 30ern liegt, dass Du im Querformat druckst.
Steht denn vor Deinem WCX eine Leerzeile und stehen die Seiten auf dem Excel-Blatt alle untereinander? Dann könnte man den Zeilenumbruch auf die letzte Leerzeile der Seite legen.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#3
(08.05.2015, 20:17)schauan schrieb: Hallöchen,

ich nehme an, wenn Dein Seitenumbruch in den 30ern liegt, dass Du im Querformat druckst.
Steht denn vor Deinem WCX eine Leerzeile und stehen die Seiten auf dem Excel-Blatt alle untereinander? Dann könnte man den Zeilenumbruch auf die letzte Leerzeile der Seite lHallo

Hallo schauan,

erst mal danke für die Antwort.

Ja die Seiten stehen untereinander. und nein, leider keine leerzeilen. Die Analysen werden nacheinander aufgelistet. Problem ist halt auch, dass am ende immer variabel unterschiedliche Analysen stehen......
to top
#4
Hallöchen,

das wäre mal ein Ansatz. Was passiert, ist kommentiert.

Code:
Sub ZeilenUmbruchSetzen()
'Variablendeklarationen
'Integer
Dim iCnt%, iFoundRow%
'Mit dem Blatt 1
With Worksheets(1)
   'Seitenumbrueche zuruecksetzen
   .ResetAllPageBreaks
   'Zaehler fuer Seitenumbrueche setzen
   iCnt = 1
   'Erste Fundstelle ermitteln
   Set c = .Columns(1).Find(What:="WSC", After:=.Cells(1, 1), _
             LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext)
   'Wenn etwas gefunden wurde, dann
   If Not c Is Nothing Then
       'erste Fundstelle merken
       firstaddress = c.Address
       'Zeilennummer merken
       iFoundRow = c.Row
       'Schleife ueber alle Treffer
       Do
          'Wenn die Treffezeile unter der Umbruchzeile leigt, dann
          If c.Row > .HPageBreaks(iCnt).Location.Row Then
               'Seitenumbruch vor letztes WSC einfuegen
               .HPageBreaks.Add before:=Cells(iFoundRow, 1)
               'Zaehler hochsetzen
               iCnt = iCnt + 1
          'Ende Wenn die Treffezeile unter der Umbruchzeile leigt, dann
           End If
           'Trefferzeile merken
           iFoundRow = c.Row
           'naechsten Treffer suchen
           Set c = .Columns(1).FindNext(c)
       'Ende Schleife ueber alle Treffer
       Loop While Not c Is Nothing And c.Address <> firstaddress And .HPageBreaks.Count >= iCnt
   'Ende Wenn etwas gefunden wurde, dann
   End If
'Mit dem Blatt 1
End With
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#5
(10.05.2015, 19:07)schauan schrieb: 'Seitenumbruch vor letztes WSC einfuegen
hallo shauan,
klingt vom Ansatz her ganz gut. Es gibt aber leider nur ein WSC. die anderen Analysen heissen anders....... WSC ist manchmal auch gar nicht dabei...... Wie gesagt abhängig der ausgewählten Analysen. Sehr variabel eben Wink
VG
twobbi
to top
#6
Hallo twobbi,

dann müsstest Du mal beschreiben, wie das Programm erkennen soll, wo eine Analyse anfängt und / oder aufhört. Wenn Du das nicht beschreiben kannst, dann kann man es auch nicht programmieren. Undecided
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#7
(11.05.2015, 16:48)schauan schrieb: Hallo twobbi,

dann müsstest Du mal beschreiben, wie das Programm erkennen soll, wo eine Analyse anfängt und / oder aufhört. Wenn Du das nicht beschreiben kannst, dann kann man es auch nicht programmieren.  Undecided

genau dass ist ja die Frage und mein Problem ^^    die Analysen werden ja vorher über eine Macroeingabe ausgewählt. denke schon, dass das Programm dann weiss wann eine Analyse aufhört und anfängt. sind ja hinterlegt...... 20  Ich denke, dass funktioniert, wenn das Programm alle ausgewählten Analysen nacheinander durchläuft und dann nach dem entsprechenden Seitenumbruch schaut...... Huh  Nur wie ich ihm das programmtechnisch sage weiss ich nicht genau  Undecided
to top
#8
Hallöchen,

also, mein Programm ändert ja nur Seitenumbrüche und wählt keine Analysen. Es kann Dir auch keine ausgewählten Analysen durchlaufen, wenn es die nicht kennt und nicht weiß, wie und wo es die suchen soll. Du müsstest den code zur Auswahl der Analysen mal posten oder die Excel-Datei damit, wo man sich das anschauen kann.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#9
Hallo,

ich gehe davon aus, dass Du genau in den besagten Zeilen irgendwo Verbundene Zellen hast.

Wenn Ja, dann solltest Du den Tabellenaufbau mal zeigen.
Denn um die Umbrüche anzupassen müsste man unter Umständen
die Verbindungen aufheben, damit man die Anzahl Zeilen pro Seite
feststellt. Danach kann der Seitenumbruch neu gesetzt und die Zellen können wieder verbunden werden.
Gruß Atilla
to top
#10
Hallo,

unten ein Beispielcode. Ich gehe von zwei Seiten aus.
Außerdem setze ich einfach voraus, dass in Spalte C verbundene Zellen sind.
Siehe auch Kommentare im Code.

Code:
Sub Seitenumbruch_anpassen()
 Dim lngR
 With Sheets("Tabelle1")
   .ResetAllPageBreaks   'Seitenumbrüche setzen
   If .HPageBreaks.Count > 0 Then  'wenn mehr als eine Seite dann
     lngR = .HPageBreaks(1).Location.Row  'Zeile des ersten Seitenumbruchs feststellen
     If Cells(lngR, 3).MergeCells = True Then  'wenn Zellen In Spalte 3 der Zeile mit mit dem Seitenumbruch verbunden sind dann
       lngR = Cells(lngR, 3).MergeArea.Row 'feststellen der ersten Zeile der Verbundenen Zelle
       .HPageBreaks.Add Cells(lngR, 1) 'Seienumbruch über der verbundenen Zelle setzen
     End If
   End If
 End With
End Sub
Gruß Atilla
to top


Gehe zu:


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