Lösung ohne Seitenwechsel-Funktion
ich habe 2 dynamische Tabellen in Excel, welche aus einer
ODBC-Quelle in Excel gepumpt werden, und zwar untereinander.
Tabelle1
Tabelle2
Jetzt ist nur das Problem folgendes, das ich eben nicht weis,
wie lang die Tabellen sind, aber natürlich auch nicht den Kopf
der Tabelle2 auf dem Blatt mit der Tabelle1 haben will, dann
ein Seitenechsel kommt und dann der Rest.
Sprich ich muss manuell Seitenwechsel einbauen. Leichter
gesagt als getan, denn bau ich die da ein, lösche sie, alles
natürlich mit Macros dann bleiben die, trotz dem Befehl lösche
manuell angelegte Seitenwechsel.
Hi Michael,
Seitenwechsel sind bei Excel seltsam, ggfs muss man den gleichen Seitenwechsel mehrmals löschen bis er endlich weg ist.Na gut.
Nachfolgend mein Code der ohne Seitenwechsel auskommt.
Er geht davon aus dass dranz=54 Zeilen auf ein Blatt gehen, er ermittelt die Endzeile von Tabelle2 (letzte),dann ermittelt er die Zeile wo Tabelle2 beginnt (wois).
Die erste while druckt alle Blätter von Tabelle1 aus die in 54zeilen passen. Dann wird der rest von Tabelle1 bis zur Zeile vor tabelle2 gedruckt.
Danach passiert das gleiche mit Tabelle2, erst alles drucken was in 54 zeilen passt, dann den rest bis zu letzten Zeile von Tabelle2.
Dies alles setzt natürlich voraus dass du überall gleiche Zeilenhöhen hast, da sonst logo die 54 nicht stimmt.
Bei unterschiedlichen Zeilenhöhen wirds aufwendiger aber du kannst die gleiche Grundstruktur des Codes benutzen. Ich schreib mal wie ich da vorgehen würde.
Zuallerst (Seitenvorschau reicht) ermittelst du die letzte gedruckte Zeile deines Druckers, dann setzt du den Zeilenbereich vor und nach dieser Zeile auf geringste Zeilenhöhe (1 Punkt oder so).
Dann schaust du welche Zeile die unterste beim Ausdruck ist.
Angenommen 72. Jetzt ermittelst du mit
Msgbox Range(„A73“).Top
den Pixelwert, also die Punktanzahl die dein Drucker pro Seitenhöhe darstellt,z.B 690.
Mit Cells(r,c).Height addierst du dann Zeile für die Zeile die Zellenhöhen und druckst dann aus wenn 690 nicht überschritten werden, dann den nächsten Zeilenbereich usw usw usw.
Gruß
Reinhard
Sub tt()
dranz = 54 'Anzahl Zeilen eines Druckblattes
letzte = Range("A65536").End(xlUp).Row
Set wois = Worksheets("Tabelle1").Range(Cells(1, 1), Cells(letzte, 1)) \_
.Find("Tabelle2", LookIn:=xlValues)
If wois Is Nothing Then
MsgBox "nicht gefunden"
Exit Sub
End If
n = 0
While n \* 54 + 54