Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
920to924
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
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Variables Drucken

Variables Drucken
01.11.2007 09:29:00
Fritz_W
Hallo Excelfreunde,
wer von den VBA-kundigen unter Euch kann mir helfen?
Ich würde einen Bereich einer Tabelle ausdrucken, wobei sich der Ausdruck jeweils bis zur ersten leeren Zeile der Spalte B erstrecken sollte. In der Tabelle stehen Datensätze, diverse Spalten enthalten Formeln, der Kopf der Tabelle (Zeile 1) wird auf jedem Blatt mit ausgedruckt (eingestellt im Menu: Datei - Seite einrichten - Tabelle). Es soll immer nur der Bereich der Spalten B bis E ausgedruckt werden, wobei die Spalten D sowieso "ausgeblendet" ist. Da in der Spalte B fortlaufend Daten eingegeben werden, die Spalte E jedoch Formeln (bis zur Zeile 1000) Formeln enthält, werden mir immer unnötig viele Blätter, mit dem Kopf der Zeile 1 ausgedruckt, auch wenn beispielsweise in der Spalte B nur bis zur Zeile 280 Daten eingegeben wurden. Deshalb suche ich nach einer VBA-Lösung, die nur den Bereich der Spalten B bis E bis bis zur ersten leeren Zeile in Spalte B druckt.
Freue mich über jede Form von Hilfe.
mfg
Fritz

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
PrintArea per VBA festlegen
01.11.2007 09:37:36
NoNet
Hallo Fritz,
kopiere dazu dieses Makro in das Klassenmodul "DieseArbeitsmappe" im VBA-Editor :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
ActiveSheet.PageSetup.PrintArea = "$1:$" & [B1].End(xlDown).Row
End Sub


Gruß, NoNet

AW: PrintArea per VBA festlegen
01.11.2007 09:47:22
Fritz_W
Hallo NoNet,
vielen Dank für die angebotene Hilfe.
Das Ganze funktioniert (noch) nicht wie gewünscht. Vermutlich habe ich mein Anliegen missverständlich formuliert:
Der Ausdruck sollte sich nur auf die Spalten bis einschließlich Spalte E beschränken, das hast Du vermutlich übersehen.
Dann habe ich noch eine weitere Frage: Da ich den Code in das Klassenmodul "Diese Arbeitsmappe" kopieren soll, werden sich vermutlich diese Einschränkungen auf die Ausdrucke aller Tabellen der Arbeitsmappe beziehen. Das ist sol jedoch nicht gewollt. Lässt sich das nicht ändern?
Nochmals vielen Dank für Deine Unterstützung.
Viele Grüße
Fritz

Anzeige
PrintArea per VBA festlegen - Teil2
01.11.2007 10:03:14
NoNet
Hallo Fritz,
das hatte ich wohl überlesen ;-) Mit diesem Makro wird das nur für "Tabelle3" festgelegt :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Tabelle3" Then
ActiveSheet.PageSetup.PrintArea = "$A$1:$E$" & [B1].End(xlDown).Row
End If
End Sub


Für den Ausdruck gruppierter Tabellenblätter (also wenn z.B. per STRG-Taste mehrere Tabellenblätter im Blattregister angeklickt wurden) funktioniert das aber wohl nicht - es sei denn, "Tabelle3" ist zufällligerweise gerade das AKTIVE Blatt.
Gruß, NoNet

Anzeige
AW: PrintArea per VBA festlegen - Teil2
01.11.2007 10:12:00
Fritz_W
Hallo NoNet,
prima, soweit klappt das jetzt wie gewünscht.
Einzige Ausnahme: Der "Tabellenkopf" (=Zeile 1) der Tabelle sollte eigentlich auf jedem Blatt mit ausgedruckt werden und das ist nun nicht mehr der Fall. Gibt es hierfür noch eine Lösung.
Nochmals vielen Dank!
Schöne Grüße
Fritz

ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"
01.11.2007 10:17:00
NoNet
Hallo Fritz,
das ist mit dieser codezeile möglich :
ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" (zwischen IF und END IF einfügen !)
Das hatte ich aber in meinem Makro gar nicht geändert, daher sollte dort noch die von DIR festgelegten Wiederholungszeilen Bestand haben !
Gruß, NoNet

Anzeige
AW: ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"
01.11.2007 10:28:00
Fritz_W
Hallo NoNet,
danke, das war`s.
(Zumindest für den Moment) Wunschlos glücklich.
Schönen Feiertag noch
Fritz

AW: Variables Drucken ohne VBA
01.11.2007 19:58:48
Daniel
Hallo
da du ja VBA-nein angegeben hast, ist dir eine VBA-Freie lösung vielleicht lieber:
der Druckbereich ist ja als NAMEN hinterlegt, dh. du kannst den Druckberich über die NAMENS-Definition so angeben, daß er sich automatisch anpasst.
einzige vorraussetztung wäre, daß die Spalte B als Berechungusgrundlage keine leeren Zwischenzellen enthält. (formeln, die den Leerstring als Ergebnis haben sind ok, aber keine echten Leerzellen, weil die bei Anzahl2 nicht mitgezählt werden)
du gibts also unter EINFÜGEN - NAMEN - DEFINIEREN bei DRUCKBEREICH einmalig folgende Formel ein:

=BEREICH.VERSCHIEBEN(Tabelle1!$B$1;0;0;ANZAHL2(Tabelle1!$B:$B);4)


Der Druckbereich passt sich automatisch an die Spalte B an.
gruß, Daniel

Anzeige
AW: noch ne Anmerkung
01.11.2007 20:20:33
Daniel
noch ne Anmerkung:
die Sache hat noch nen kleinen Haken:
sobald du den Menü-Punkt DATEI-SEITE EINRICHTEN anklickst, wird die dynamische Formel mit dem aktuelle FIX-Bezug überschrieben und die Dynamik ist beim Teufel.
Wennd du aber die Seiten-Einstellung über die Druchbereichsvorschau aktivierst, bleiben die Dynamischen Namensformeln erhalten
Gruß, Daniel

AW: noch ne Anmerkung
02.11.2007 08:58:00
Fritz_W
Hallo Daniel,
ich habe eben erst Deinen Lösungsvorschlag entdeckt.
Ich werde diese Variante heute abend testen.
Ggf. melde ich mich dann noch einmal.
Ansonsten besten Dank und schöne Grüße
Fritz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige