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

Tabellen untereinander drucken

Tabellen untereinander drucken
07.12.2021 11:11:28
Hannes
Hallo zusammen,
folgende Problemstellung:
Ich habe in einer Excel Arbeitsmappe mehrere kleine Tabellen untereinander angeordnet. Die Tabellen werden automatisch gefüllt und ein entsprechendes Makro blendet leere Zeilen aus. Bzw. wenn sie wieder durch eine Formel gefüllt sind erscheinen sie wieder.
Entsprechend dem Ein- und Ausblenden der Tabellenzeilen ,,wandern" die einzelnen Tabellen nach oben und unten. Das klappt auch alles wunderbar..Meine Frage bezieht sich auf das drucken. Eine einzelne Tabelle ist in meinem Fall nie größer als ein DIN A4 Blatt!
Wenn ich dementsprechend die Tabellen ohne weitere Vorkehrungen drucke, sind einige Tabellen auf 2 Blätter verteilt, was nicht der Fall sein soll. Durch das manuelle Einfügen von Druckumbrüchen kann ich es entsprechend anpassen. Da die Tabellen in Zukunft allerdings öfter ausgedruckt werden sollen die Frage, ob der Vorgang von dem Einfügen der Umbrüche irgendwie automatisiert werden kann.
Info: Ein einfügen eines Umbruches nach jeder Tabelle ist nicht sinnvoll, da manche Tabellen aus nur einer Zeile bestehen können. Das Ausdrucken würde also zu viel Papier in Anspruch nehmen.
Ich hoffe ich konnte meine Frage einigermaßen erläutern....Ein Blatt soll also möglichst effizient ausgefüllt werden, ist der Platz auf einer Seite allerdings nicht mehr ausreichend soll die Tabelle auf einer neuen Seite beginnen.
Ich freue mich auf eure Lösungsansätze :)
Gruß Hannes

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beispieldatei?
07.12.2021 11:18:02
UweD
AW: Beispieldatei?
07.12.2021 11:43:21
Hannes
Hallo,
anbei ein anonymisiertes Beispiel aus dem die Idee hervorgehen sollte:
https://www.herber.de/bbs/user/149634.xlsm
In Tabelle 2 kann ich entsprechend Eingaben tätigen, die sich auf Tabelle 1 auswirken.
Gruß Hannes
AW: Beispieldatei?
07.12.2021 11:58:34
UweD
Hallo
versuch das mal.

Sub Seitenwechsel()
On Error GoTo Fehler
Dim TB As Worksheet, LR As Long, i As Long
Dim SP As Integer, ZE As Integer, Letzte As Long
Dim Suchw As String
'*** Stammdaten Anfang
Set TB = Sheets("Tabelle1")
SP = 1 'Spalte A
ZE = 4 'ab Zeile wegen Überschrift
Suchw = "Bezeichnung" 'Unterscheidungskriterium für neue Tabelle
'*** Stammdaten Ende
With TB
.ResetAllPageBreaks
LR = .Cells(.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
For i = ZE To LR
If .Cells(i, SP) = Suchw Then
If .Rows(i + 1).PageBreak = xlPageBreakAutomatic Then
.HPageBreaks.Add Before:=.Cells(Letzte, SP)
End If
Letzte = i
End If
Next
.HPageBreaks.Add Before:=.Cells(Letzte, SP) 'der Letzte vor Ende
End With
MsgBox "fertig"
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD
Anzeige
AW: Beispieldatei?
07.12.2021 13:16:59
Hannes
Hallo Uwe,
vielen Dank für deine Hilfe. Allerdings erhalte ich nach einfügen des Codes keine Veränderung.
Gruß Hannes
AW: Beispieldatei?
07.12.2021 13:53:11
UweD
Hallo nochmal
ergänze die "Call.. Zeile" in deinem vorhandenen Makro

Next
Application.ScreenUpdating = True
Call Seitenwechsel
End Sub
Das hier in ein Modul

Sub Seitenwechsel()
On Error GoTo Fehler
Dim TB As Worksheet, LR As Long, i As Long
Dim SP As Integer, ZE As Integer, Letzte As Long
Dim Suchw As String
'*** Stammdaten Anfang
Set TB = Sheets("Tabelle1")
SP = 1 'Spalte A
ZE = 4 'ab Zeile wegen Überschrift
Suchw = "Bezeichnung" 'Unterscheidungskriterium für neue Tabelle
'*** Stammdaten Ende
With TB
.ResetAllPageBreaks
LR = .Cells(.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
For i = ZE To LR
If .Cells(i, SP) = Suchw Then
Letzte = i
End If
If .Rows(i + 1).PageBreak = xlPageBreakAutomatic Then
.HPageBreaks.Add Before:=.Cells(Letzte, SP)
End If
Next
End With
MsgBox "fertig"
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD
Anzeige
AW: Beispieldatei?
07.12.2021 14:21:55
Hannes
Hallo,
da ich in VBA absoluter Anfänger bin: Modul einfügen heißt, dass es so aus sehen müsste?
Leider tut sich bei meiner Druckvorschau noch nichts...

Private Sub Worksheet_Activate()
Dim rngBer As Range, rngC As Range
Application.ScreenUpdating = False
Set rngBer = Range("A1:A94")
For Each rngC In rngBer
If rngC.Value = 0 Then
Rows(rngC.Row).Hidden = True
Else
Rows(rngC.Row).Hidden = False
End If
Next
Application.ScreenUpdating = True
Call Seitenwechsel
End Sub
Sub Seitenwechsel()
On Error GoTo Fehler
Dim TB As Worksheet, LR As Long, i As Long
Dim SP As Integer, ZE As Integer, Letzte As Long
Dim Suchw As String
'*** Stammdaten Anfang
Set TB = Sheets("Tabelle1")
SP = 1 'Spalte A
ZE = 4 'ab Zeile wegen Überschrift
Suchw = "Bezeichnung" 'Unterscheidungskriterium für neue Tabelle
'*** Stammdaten Ende
With TB
.ResetAllPageBreaks
LR = .Cells(.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
For i = ZE To LR
If .Cells(i, SP) = Suchw Then
Letzte = i
End If
If .Rows(i + 1).PageBreak = xlPageBreakAutomatic Then
.HPageBreaks.Add Before:=.Cells(Letzte, SP)
End If
Next
End With
MsgBox "fertig"
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number 0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Anzeige
AW: Beispieldatei?
07.12.2021 14:51:04
UweD
Hallo nochmal
Dein Makro steht hier:
Userbild
Das Neue hier
Userbild
Dein Makro wird automatisch ausgeführt, wenn du auf das Tabellenblatt1 wechselst.
Also wenn du in Tabelle2 was geändert hast und wieder Tab1 ansiehst.
Am Schluss wird dann das neue Makro aufgerufen, wodurch die Zeilenumbrüche neu gesetzt werden.
Bei mir klappt das.
Sieht so aus
Vorher:
Userbild
Nach einen Änderung in Tabelle2:
Userbild
LG UweD
Anzeige
AW: Beispieldatei?
07.12.2021 14:56:32
UweD
Hallo nochmal
Ich habe gerade die Vermutung, das das Makro zu schnell ist.
Der nächste Seitenumbruch muss scheinbar erst neu berechnet werden und dann ist das Makro schon fertig.
Ich habe noch eine Wait eingesetzt.
Versuch es nochmal

Sub Seitenwechsel()
On Error GoTo Fehler
Dim TB As Worksheet, LR As Long, i As Long
Dim SP As Integer, ZE As Integer, Letzte As Long
Dim Suchw As String
'*** Stammdaten Anfang
Set TB = ActiveSheet
SP = 1 'Spalte A
ZE = 4 'ab Zeile wegen Überschrift
Suchw = "Bezeichnung" 'Unterscheidungskriterium für neue Tabelle
'*** Stammdaten Ende
With TB
.ResetAllPageBreaks
LR = .Cells(.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
For i = ZE To LR
If .Cells(i, SP) = Suchw Then
Letzte = i
End If
If .Rows(i + 1).PageBreak = xlPageBreakAutomatic Then
.HPageBreaks.Add Before:=.Cells(Letzte, SP)
Application.Wait 100
End If
Next
End With
MsgBox "fertig"
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Getestet habe ich:
Alle Zellen in Tab2 B2:C9 löschen
bzw überall was anderes reinschreiben
Anzeige
AW: Beispieldatei?
07.12.2021 15:15:04
Hannes
Das ist es!!! Ich danke dir vielmals!
Das mit den Modulen kannte ich vorher nicht. Vielen, Vielen Dank!
Prima. Danke für die Rückmeldung. owT
07.12.2021 15:59:06
UweD
AW: Prima. Danke für die Rückmeldung. owT
07.12.2021 16:16:41
Hannes
Hallo, ich muss doch nochmal stören....
Nach kurzer Anpassung hab ich in meinem Anwendungsfall auch die Überschrift (1 Zelle über ,,Bezeichnung") mit drin, aber
ich hab zum Teil leider zu viele Druckumbrüche drin...
In Rot markiert ein Umbruch welcher durch die Formel erzeugt wurde, in Blau ist noch ein gestrichelter Bereich hinterlegt, welche automatisch von Excel erzeugt wird. Hast du da zufällig eine Lösung, wie ich die gestrichelten Umbrüche entfernen kann?
In folgender Abbildung ein Beispiel:
Userbild
ein Seite sieht sieht im Druck dementsprechend leider so aus:
Userbild
Durch ,,Druckumbrüche" kann ich den Fehler leider nicht beheben....
Anzeige
AW: Prima. Danke für die Rückmeldung. owT
07.12.2021 16:56:50
UweD
Hallo
Geh mal in den VB- Editor und klicke das Makro mal im Einzelschritt durch.
F8
Ist dann alles Richtig?
AW: Prima. Danke für die Rückmeldung. owT
08.12.2021 07:21:46
Hannes
Hallo,
ja soweit scheint alles richtig.
AW: Prima. Danke für die Rückmeldung. owT
08.12.2021 08:26:07
Hannes
Hallo, ich bins nochmal.
Die Funktion scheint nur auf der ersten Seite tadellos zu funktionieren. Bei den folgenden Seiten werden durch die gestrichelten Umbrüche des öfteren unschöne Trennungen vollzogen.
AW: Prima. Danke für die Rückmeldung. owT
08.12.2021 09:29:01
UweD
Hallo
das muss am timing liegen.
spiel mal ein wenig mit den Sekunden
Application.Wait Now + TimeSerial(0, 0, 2) 'wartet 2 Sekunden
AW: Prima. Danke für die Rückmeldung. owT
08.12.2021 10:41:10
Hannes
Hi,
ich hab jetzt mehrere Varianten probiert, aber leider ohne erfolg. Es hat sich bei keinem Versuch auch nur ein Umbrüche verschoben.
Anzeige
AW: Prima. Danke für die Rückmeldung. owT
08.12.2021 15:31:35
UweD
Hallo
ich habe es jetzt mal mit 2 Sekunden versucht, und in deiner Musterdatei klappt das.
Ich häng Sie mal an
https://www.herber.de/bbs/user/149684.xlsx
LG
AW: Prima. Danke für die Rückmeldung. owT
08.12.2021 15:45:35
Hannes
Hi,
Ich denke das ist die falsche Datei oder?
AW: neu
08.12.2021 16:46:36
Hannes
Hallo, mit dem kopieren von deinem Code klappt es!!!!
VIELEN VIELEN DANK!!
Ich weiß nicht, woch ich bei mir den Bock geschossen habe... Schaue ich morgen in Ruhe nochmal..
Anzeige
AW: Tabellen untereinander drucken
09.12.2021 05:30:49
Peter
Hallo Hannes,
ich habe mal Deine Beispieldatei etwas verändert und um weitere Zeilen erweitert. Deine Formeln in Spalte "A" habe ich durch die Bezeichnungen ersetzt. Die Tabelle 2 wird bei meiner Lösung nicht gebraucht, diese und die von Dir verwendeten Makros habe ich weggelassen. Das Besondere meiner Lösung: die Zeilen können beliebig hoch sein und es können Zeilen ausgeblendet sein - diese bleiben bei der Druckvorbereitung unberücksichtigt. Die Lösung hierfür war besonders knifflig. Was sehr hilfreich war, ist die Verwendung der Funktion zum Auslesen der Zeilenhöhe. Die Spalten "H:L" müssen zu Beginn eingeblendet werden, da sonst die "Suchen"-Funktion nicht ausgeführt werden kann. Kurz vor dem Schluss werden die wieder ausgeblendet. Ganz zum Schluss erscheint die Druckdarstellung. Nach dem Klicken auf den Befehlsbutton bitte solange warten.
Hier meine Lösung
https://www.herber.de/bbs/user/149698.xlsm
Bitte mal ausprobieren, Rückmeldung wäre schön.
Mit freundlichem Gruß
Peter Kloßek
Anzeige
AW: Tabellen untereinander drucken
09.12.2021 07:44:40
Hannes
Hallo Peter,
deine Lösung ist echt gut und sie scheint in der beispieldatei auch zu funktionieren. Ich finde es super gelöst mit dem Befehlsbutton. Als ich deinen Code in meine Arbeitsmappe kopiert habe und über entwicklertools den Befehlsbutton mit makro1a belegt hatte, haben ich leider einen Laufzeitfehler erhalten. Markiert wird diese Zeile unter Makro 1:
Range("L3:L3").Copy Range(KopBer)
Gruß Hannes
AW: Tabellen untereinander drucken
09.12.2021 12:48:19
Peter
Hallo Hannes,
es sind in meinem Beispiel nicht nur die Spalten "H" bis "L" ausgeblendet, sondern noch weitere Spalten! Du musst die Inhalte aus den Zellen "J1" bis "V2" in Deine Anwendung 1:1 (also auch die Formeln) übernehmen. Bei der Übertragung der Formeln könnte Excel möglicherweise den Bezug auf die Herber-Arbeitsmappe mitschleppen; bitte dann die kopierten Formeln (Zellen L1, R1, R2, T1, T2 und V1) entsprechend anpassen. Hier ist auch die Variante "KopBer" (für Kopierbereich) untergebracht. Wenn diese bei Dir fehlt, dann kommt es zu dem beschriebenen Fehler.
Bitte die genannten Zelleninhalte bei Dir noch nachtragen und noch einmal probieren. Sollten weitere Fragen auftauchen, erneut melden.
Noch ein Hinweis zur Zelle "K1". Hier ist die maximale Punktzahl für eine A4-Seite angegeben. Unter Umständen (andere Ränder oben und unten, Raum für die Überschriften und Fußnoten, die Du im Seitenlayout einfügen/ändern kannst) ist hier eine Anpassung notwendig.
Mit freundlichem Gruß
Peter Kloßek
AW: Tabellen untereinander drucken
10.12.2021 05:41:10
Peter
Hallo Hannes,
ich schätze mal, es haben sich noch erhebliche Schwierigkeiten in der Umsetzung auf das tatsächliche Projekt ergeben. Wie ich schon bei meinem ersten Post erwähnt habe, sind in dem zu bearbeitenden Arbeitsblatt für den Druck zuvor die Formeln zu eliminieren. Außerdem steht bei Dir in den leeren Zeilen jeweils eine "1", die ebenso raus muss. Diese Dinge sind zwar für die Erstellung der Daten sehr wichtig, aber für die Druckaufbereitung nicht erforderlich. Die in der beiliegenden Datei aufgeführten Änderungen werden zwar in der Original-Arbeitsmappe durchgeführt und anschließend das Blatt in eine andere Mappe verschoben. Die Original-Arbeitsmappe wird dann o h n e speichern geschlossen. Wenn zuvor Daten darin bearbeitet wurden, muss natürlich danach und vor der Bearbeitung zum Druck gespeichert werden.
https://www.herber.de/bbs/user/149729.xlsm
Den Makro100 nur dann ausführen, wenn das zu druckende Worksheet geöffnet ist!
Mit freundlichem Gruß
Peter Kloßek

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige