Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Excel - Drucken mit Druckbereich/Seitenanzahl

Forumthread: VBA Excel - Drucken mit Druckbereich/Seitenanzahl

VBA Excel - Drucken mit Druckbereich/Seitenanzahl
09.08.2017 15:25:36
Hans
Hallo Excellenten,
ich suche nach einer Möglichkeit, in einem Excel-Tabellenblatt 3 Seiten nach folgendem Schema zu drucken:
1. Seite (2x drucken)
2. Seite (1x drucken)
3. Seite (1x drucken)
Er soll also die erste Seite 2 Mal drucken und die anderen beiden je 1 Mal
Der Einfachheit halber nenne ich diesen Algorhythmus: 1123
Dies habe ich bereits mit folgendem Code versucht:

ActiveSheet.PageSetup.PrintArea = "$A$1:$F$53"
ActiveSheet.PrintOut Copies:=2
ActiveSheet.PageSetup.PrintArea = False
ActiveSheet.PageSetup.PrintArea = "$A$54:$F$106"
ActiveSheet.PrintOut
ActiveSheet.PageSetup.PrintArea = False
ActiveSheet.PageSetup.PrintArea = "$A$1:$F$53"
ActiveSheet.PrintOut
ActiveSheet.PageSetup.PrintArea = False

Er macht hier nicht 1123, sondern 112123. Warum?!
Mich interessiert sehr, wie man das in Excel 2010 im Jahr 2017 regelt.
Die ActiveSheet-Variante ist natürlich nicht ideal. Ich könnte alles in Variablen packen und dann ansprechen, wann immer ich will. Aber als was würde ich z.B. ActiveSheet.Printout speichern? ActiveSheet.PageSetup.PrintArea könnte man doch als Range-Objekt speichern, oder? Gebt mir mal bitte auch Tipps, wie so etwas gehandhabt wird.
Vielen Dank für jede Hilfe!
Gruß Hans
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Excel - Drucken mit Druckbereich/Seitenanzahl
09.08.2017 16:13:43
onur
warum ist zeile 1 gleich zeile 7?
AW: VBA Excel - Drucken mit Druckbereich/Seitenanzahl
09.08.2017 16:24:15
Hans
Das muss $A$108:$A$155 heißen, hatte ich vergessen zu ändern (mit Copy&Paste eingefügt)
AW: VBA Excel - Drucken mit Druckbereich/Seitenanzahl
10.08.2017 07:36:19
Hans
Bin ich hier richtig im Excel-VBA-Forum? Mich überrascht, dass es nach 1 Tag immer noch keine Reaktion gibt. Ist irgend etwas unverständlich?
Ich sage ihm hier:
Drucke Bereich A1 bis F53 für Seite 1 genau 2 Mal.
Drucke Bereich A54 bis F106 für Seite 2 genau 1 Mal.
Drucke Bereich A108 bis F155 für Seite 3 genau 1 Mal.
Wie lautet hierzu der VBA-Code?
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA für das Drucken mit Druckbereich und Seitenanzahl in Excel


Schritt-für-Schritt-Anleitung

Um in Excel VBA die Druckeinstellungen für verschiedene Seiten festzulegen und diese in einer bestimmten Reihenfolge (wie 1123) auszudrucken, kannst Du folgenden VBA-Code verwenden:

Sub DruckenMitDruckbereich()
    ' Druckbereich für Seite 1
    ActiveSheet.PageSetup.PrintArea = "$A$1:$F$53"
    ActiveSheet.PrintOut Copies:=2 ' Seite 1 2 Mal drucken

    ' Druckbereich für Seite 2
    ActiveSheet.PageSetup.PrintArea = "$A$54:$F$106"
    ActiveSheet.PrintOut Copies:=1 ' Seite 2 1 Mal drucken

    ' Druckbereich für Seite 3
    ActiveSheet.PageSetup.PrintArea = "$A$108:$F$155"
    ActiveSheet.PrintOut Copies:=1 ' Seite 3 1 Mal drucken

    ' Druckbereich zurücksetzen
    ActiveSheet.PageSetup.PrintArea = False
End Sub

Dieser Code druckt die erste Seite zweimal, die zweite und dritte Seite jeweils einmal. Achte darauf, dass Du den richtigen Druckbereich definierst, um die gewünschten Informationen korrekt auszudrucken.


Häufige Fehler und Lösungen

  • Fehler: Der Druckbefehl druckt die Seiten nicht in der gewünschten Reihenfolge.

    • Lösung: Stelle sicher, dass Du die PrintOut-Befehle in der richtigen Reihenfolge ausführst und die Druckbereiche korrekt gesetzt sind.
  • Fehler: Der Druckbereich wird nicht korrekt erkannt.

    • Lösung: Überprüfe die angegebenen Zellbereiche und stelle sicher, dass sie die richtigen Daten enthalten. Verwende keine Leerzeilen oder -spalten in den definierten Bereichen.

Alternative Methoden

Eine alternative Methode ist die Verwendung von PrintPreview, um eine Vorschau der Druckausgabe zu sehen, bevor Du den Druckauftrag sendest. Das kann helfen, Fehler zu vermeiden.

Sub DruckVorschau()
    ActiveSheet.PageSetup.PrintArea = "$A$1:$F$53"
    ActiveSheet.PrintPreview
End Sub

Diese Methode ist besonders nützlich, wenn Du sicherstellen möchtest, dass alles korrekt aussieht, bevor Du die endgültige Druckausgabe tätigst.


Praktische Beispiele

Wenn Du eine Stundenzettel-Vorlage für das Jahr 2022 erstellen möchtest, kannst Du die oben beschriebenen Schritte verwenden, um die verschiedenen Seiten des Stundenzettels zu drucken. Hier ein einfaches Beispiel:

  1. Seite 1: Enthält die allgemeinen Informationen.
  2. Seite 2: Detaillierte Arbeitszeiten.
  3. Seite 3: Unterschrift und Bestätigung.

Du kannst die Druckbereiche entsprechend anpassen, um sicherzustellen, dass jede Seite die richtigen Informationen enthält.


Tipps für Profis

  • Verwende With ActiveSheet.PageSetup um den Code kompakter zu gestalten.
  • Setze die Druckereinstellungen wie Seitenränder und Ausrichtung vor dem Drucken, um die Ausgabe zu optimieren:
With ActiveSheet.PageSetup
    .Orientation = xlPortrait
    .Margins = Application.InchesToPoints(0.5)
End With

Dies kann die Druckqualität erheblich verbessern.


FAQ: Häufige Fragen

1. Frage
Wie kann ich die Druckeinstellungen für alle Arbeitsblätter in einer Arbeitsmappe anwenden?
Antwort: Du kannst eine Schleife verwenden, die durch alle Arbeitsblätter iteriert und die Druckeinstellungen jeweils anpasst.

2. Frage
Kann ich die Druckvorschau für alle Seiten gleichzeitig anzeigen?
Antwort: Ja, Du kannst eine Schleife verwenden, um für jeden Druckbereich die PrintPreview-Methode aufzurufen, bevor du den Druckauftrag sendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige