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

Forumthread: Mit VBA bestimmte Seiten drucken

Mit VBA bestimmte Seiten drucken
08.09.2021 15:16:14
Andreas
Hi zusammen,
habe eine VBA, mit der ich aus 5 verschiedenen Tabellenblättern drucken möchte.
Die Vorgabe darüber welches der Tabellenblätter gedruckt werden soll steht in meinem Tabellenblatt "DQ" in Zelle "i8".
Hier wird mit einer Formel ein Wert von 1-5 ermittelt. Wenn also eine 4 errechnet wird, möchte ich eben auch nur Tabelle 1-4 drucken.
Kann mir bitte jemand sagen, was ich umstellen muss, damit das funktioniert?
Aktuell kommen leider immer alle 5 Blätter : (
Vielen Dank vorab
Gruß Andreas
Sub DruckTabellen()
Dim strDruckerAktiv$, i%, max%, vz%, bz%, sStdDrucker$
sStdDrucker = Application.ActivePrinter
'Application.ActivePrinter = "\\SRVADS01.Briefpapier auf Ne08:"
strDruckerAktiv = Application.ActivePrinter
max = Sheets("DQ").Range("I8").Value
If max If max > 5 Then max = 5
For i = 1 To max
vz = i * 52 - 51: bz = i * 37
Worksheets("Tabelle1").Range("F" & vz & ":S" & bz).PrintPreview '.PrintOut Copies:=1
Worksheets("Tabelle2").Range("F" & vz & ":S" & bz).PrintPreview '.PrintOut Copies:=1
Worksheets("Tabelle3").Range("F" & vz & ":S" & bz).PrintPreview '.PrintOut Copies:=1
Worksheets("Tabelle4").Range("F" & vz & ":S" & bz).PrintPreview '.PrintOut Copies:=1
Worksheets("Tabelle5").Range("F" & vz & ":S" & bz).PrintPreview '.PrintOut Copies:=1
Next i
Application.ActivePrinter = sStdDrucker
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit VBA bestimmte Seiten drucken
08.09.2021 15:31:01
Rudi

For i = 1 To max
vz = i * 52 - 51: bz = i * 37
Worksheets("Tabelle" & i).Range("F" & vz & ":S" & bz).PrintPreview '.PrintOut Copies:=1
Next i
soll wirklich immer tiefer gerutscht werden?
Gruß
Rudi
AW: Mit VBA bestimmte Seiten drucken
08.09.2021 15:39:21
Andreas
Hi Rudi,
nein die Blätter sehen 1:1 gleich aus von der Formatierung her.
Leider kenne ich mich mit VBA nur sehr wenig aus, und das ist die einzige VBA, die ich habe um Bereiche zu drucken =D
Dass das dafür sorgt tiefer zu rutschen wusste ich garnicht : /
Gedruckt werden soll eigentlich immer der Bereich von F1-S36, oder der Bereich "Auftrag1", "Auftrag2"... so habe ich die Bereiche mit dem Namensmanager benannt.
Falls du mir helfen kannst wäre das super : )
Gruß Andreas
Anzeige
AW: Mit VBA bestimmte Seiten drucken
08.09.2021 16:07:44
Rudi
dann vermutlich

For i = 1 To max
Worksheets("Tabelle" & i).Range("F1:S36").PrintPreview '.PrintOut Copies:=1
Next i
Gruß
Rudi
AW: Mit VBA bestimmte Seiten drucken
08.09.2021 16:16:42
Andreas
Hi Rudi,
Danke für deine Rückmeldung.
Aber wohin muss deine Zeile?
Habe den Fett gedruckten Teil gelöscht und deine Zeile dort eingefügt.
Hat aber leider nicht funktioniert.
Außerdem kann ich in deinem Code keinen Bezug zu der Zelle I8 aus dem Tabellenblatt "DQ" sehen, der ja vorgeben soll, welches der 5 Tabellenblätter auch gedruckt werden soll.
Wäre super wenn du mir weiterhelfen kannst.
Sub DruckTabellen()
Dim strDruckerAktiv$, i%, max%, vz%, bz%, sStdDrucker$
sStdDrucker = Application.ActivePrinter
'Application.ActivePrinter = "\\SRVADS01.Briefpapier auf Ne08:"
strDruckerAktiv = Application.ActivePrinter
max = Sheets("DQ").Range("I8").Value
If max If max > 5 Then max = 5
For i = 1 To max
vz = i * 52 - 51: bz = i * 37

Worksheets("Tabelle1").Range("F" & vz & ":S" & bz).PrintPreview '.PrintOut Copies:=1
Worksheets("Tabelle2").Range("F" & vz & ":S" & bz).PrintPreview '.PrintOut Copies:=1
Worksheets("Tabelle3").Range("F" & vz & ":S" & bz).PrintPreview '.PrintOut Copies:=1
Worksheets("Tabelle4").Range("F" & vz & ":S" & bz).PrintPreview '.PrintOut Copies:=1
Worksheets("Tabelle5").Range("F" & vz & ":S" & bz).PrintPreview '.PrintOut Copies:=1
Next i
Application.ActivePrinter = sStdDrucker
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub

Anzeige
AW: Mit VBA bestimmte Seiten drucken
08.09.2021 23:35:21
Peter
Hallo Andreas,
ich habe mal eine Musterdatei zum Ausdrucken nach Deinen Vorstellungen erstellt. Die Anzahl der Arbeitsblätter wird im Arbeitsblatt DQ angegeben und per Makro1 wird der Druck ausgeführt.
https://www.herber.de/bbs/user/147971.xlsm
Bitte mal ausprobieren. Rückmeldung wäre schön.
Mit freundlichem Gruß
Peter Kloßek
Anzeige
AW: Mit VBA bestimmte Seiten drucken gelöst
09.09.2021 08:52:55
Andreas
Guten Morgen Peter,
das ist perfekt :D
Funktioniert 1a, wie gewollt.
Vielen lieben Dank für deine Mühe Peter!
Wünsche dir einen schönen Tag
Gruß Andreas
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mit VBA gezielt Seiten drucken


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues VBA-Modul:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke mit der rechten Maustaste auf das Projekt, wähle Einfügen und dann Modul.
  2. Füge den folgenden Code ein:

    Sub DruckTabellen()
       Dim strDruckerAktiv As String
       Dim i As Integer
       Dim max As Integer
       Dim sStdDrucker As String
    
       sStdDrucker = Application.ActivePrinter
       max = Sheets("DQ").Range("I8").Value
    
       If max > 5 Then max = 5
    
       For i = 1 To max
           Worksheets("Tabelle" & i).Range("F1:S36").PrintPreview '.PrintOut Copies:=1
       Next i
    
       Application.ActivePrinter = sStdDrucker
    End Sub
    • Dieser Code ermöglicht es dir, mit excel vba print preview die gewünschten Seiten zu drucken.
  3. Füge den Bezug zur Zelle I8 hinzu:

    • Stelle sicher, dass in der Zelle I8 deines Arbeitsblattes "DQ" die gewünschte Anzahl an Tabellenblättern steht (1-5).
  4. Teste den Code:

    • Führe das Makro aus, um sicherzustellen, dass nur die angegebenen Tabellenblätter gedruckt werden.

Häufige Fehler und Lösungen

  • Problem: Alle 5 Blätter werden trotz vordefinierter Anzahl gedruckt.

    • Lösung: Überprüfe, ob der Wert in Zelle I8 korrekt ist und dass der Code max = Sheets("DQ").Range("I8").Value korrekt ausgeführt wird.
  • Problem: Die Druckvorschau zeigt nicht den richtigen Bereich.

    • Lösung: Stelle sicher, dass der Bereich F1:S36 in den jeweiligen Arbeitsblättern existiert und korrekt formatiert ist.

Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, kannst du auch die integrierten Druckoptionen von Excel nutzen:

  1. Drucken über das Menü:

    • Gehe zu Datei > Drucken.
    • Wähle den Druckbereich und die Seitenzahlen, die du drucken möchtest. Mit der Option „Drucken“ kannst du „nur bestimmte Seiten drucken“.
  2. Nutzung von Excel-Vorlagen:

    • Erstelle ein Unterweisungsformular, das bereits die gewünschten Seitenzahlen vorab definiert hat.

Praktische Beispiele

Ein Beispiel für das Drucken von nur bestimmten Seiten in Excel:

Sub DruckeAusgewaehlteBlätter()
    Dim max As Integer
    max = Sheets("DQ").Range("I8").Value
    For i = 1 To max
        Worksheets("Tabelle" & i).PrintOut Copies:=1
    Next i
End Sub

In diesem Beispiel wird vba drucken genutzt, um die definierten Tabellenblätter direkt auszudrucken.


Tipps für Profis

  • Benutze Variablen: Definiere Variablen für Druckeinstellungen wie Copies, um die Flexibilität zu erhöhen.
  • Makros optimieren: Reduziere die Anzahl der Zeilen in deinem Code, um die Übersichtlichkeit zu verbessern.
  • Debugging: Nutze die Debugging-Tools im VBA-Editor, um Probleme schnell zu identifizieren.

FAQ: Häufige Fragen

1. Frage
Wie kann ich die Anzahl der Kopien ändern, die ich drucken möchte?
Antwort: Du kannst die Anzahl der Kopien im PrintOut-Befehl anpassen, indem du Copies:=x verwendest, wobei x die gewünschte Anzahl ist.

2. Frage
Kann ich den Druckvorgang auch ohne Druckvorschau durchführen?
Antwort: Ja, wenn du die Zeile .PrintPreview entfernst und stattdessen .PrintOut verwendest, druckt Excel direkt ohne Vorschau.

3. Frage
Wie kann ich die Druckbereiche für verschiedene Tabellenblätter anpassen?
Antwort: Ändere einfach den Range in der Zeile Worksheets("Tabelle" & i).Range("F1:S36") zu dem gewünschten Bereich.

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