Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Druck + Anzahl Exemplare + autom. Nummerierung

Forumthread: VBA Druck + Anzahl Exemplare + autom. Nummerierung

VBA Druck + Anzahl Exemplare + autom. Nummerierung
31.03.2015 17:29:06
Dominic

Hallo zusammen,
wie kann ich das folgende Skript soweit ändern, dass Excel eine Abfrage startet, wie viele Exemplare ich ausdrucken will (Werte von 1-5 möglich), und die Ausdrucke dann z. B. in der Fußzeile links unten durchnummeriert werden (Ausdruck 1 / Ausdruck 2 usw. )
Danke im Voraus!
Sub WerteDrucken()
With ActiveSheet.PageSetup
.Zoom = False
.PrintArea = "$A$6:$L$25"
.Orientation = xlPortrait
.Zoom = 75
.CenterHeader = "&""Comic Sans MS""&16""&I" & "Übersicht aller Werte"""
End With
Application.Dialogs(xlDialogPrint).Show
ActiveSheet.PageSetup.PrintArea = False
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Druck + Anzahl Exemplare + autom. Nummerierung
31.03.2015 17:55:42
Klexy

Sub WerteDrucken()
With ActiveSheet.PageSetup
.Zoom = False
.PrintArea = "$A$6:$L$25"
.Orientation = xlPortrait
.Zoom = 75
.CenterHeader = "&""Comic Sans MS""&16""&I" & "Übersicht aller Werte"""
End With
Dim Anzahl As Integer
Anzahl = InputBox(Chr(13) & Chr(13) & "Bitte Anzahl eintragen" & Chr(13) & "", "Druckt die  _
angegebene Anzahl")
If Anzahl  5 Then
MsgBox "Es dürfen nur 1 - 5 Exemplare gedruckt werden"
Exit Sub
Else
ActiveWindow.SelectedSheets.PrintOut Copies:=Anzahl
'Application.Dialogs(xlDialogPrint).Show
ActiveSheet.PageSetup.PrintArea = False
End If
End Sub

Anzeige
AW: VBA Druck + Anzahl Exemplare + autom. Nummerierung
31.03.2015 18:06:37
Dominic
Hi,
irgendwie funktioniert es nicht ganz. Zunächst war ein Syntax Fehler bei der Zeile
Anzahl = InputBox(Chr(13) & Chr(13) & "Bitte Anzahl eintragen" & Chr(13) & "", "Druckt die _
angegebene Anzahl")
drin, daher habe ich es wie folgt geändert:
Anzahl = InputBox(Chr(13) & Chr(13) & "Bitte Anzahl eintragen" & Chr(13) & "", "Druckt die angegebene Anzahl")
Dadurch wird aber die Ausdrucknummer aufgeführt, und der Druckauftrag geht immer an meinen Standardrucker. Und das obwohl ich den von dir ausgeblendeten Teil wieder herangezogen habe.
Application.Dialogs(xlDialogPrint).Show
Dadurch erscheint zwar die Drucker Auswahl, aber im Hintergrund wurde offensichtlich dennoch ein Druckauftrag an meinen Drucker verschickt, verstehe nur nicht wieso?

Anzeige
AW: VBA Druck + Anzahl Exemplare + autom. Nummerierung
31.03.2015 18:21:13
Klexy
Das mit dem Unterstrich ist ein automatisch erzeugter Zeilenumbruch hier im Forum.
Der Druckauftrag wird durch .PrintOut verschickt. Du wolltest doch drucken, oder? Dass du auch einen Drucker auswählen wolltest und nicht nur die Anzahl, hast du nicht gesagt. Standarddrucker ist normal.
Versuch das, nicht getestet:
Sub WerteDrucken()
With ActiveSheet.PageSetup
.Zoom = False
.PrintArea = "$A$6:$L$25"
.Orientation = xlPortrait
.Zoom = 75
.CenterHeader = "&""Comic Sans MS""&16""&I" & "Übersicht aller Werte"""
End With
Dim Anzahl As Integer
Anzahl = InputBox(Chr(13) & Chr(13) & "Bitte Anzahl eintragen" & Chr(13) & "", "Druckt die  _
angegebene Anzahl")
If Anzahl  5 Then
MsgBox "Es dürfen nur 1 - 5 Exemplare gedruckt werden"
Exit Sub
Else
Dim Standarddrucker As Variant
Dim Meindrucker As String
Standarddrucker = ActivePrinter
Meindrucker = "Hier den Namen des Druckers eintragen" ' das sieht dann irgendwie so aus: _
"\\drucker-d-03\hp1625 auf Ne02:"
ActivePrinter = Meindrucker
ActiveWindow.SelectedSheets.PrintOut Copies:=Anzahl
'Application.Dialogs(xlDialogPrint).Show
ActiveSheet.PageSetup.PrintArea = False
ActivePrinter = Standarddrucker
End If
End Sub

Anzeige
AW: VBA Druck + Anzahl Exemplare + autom. Nummerierung
01.04.2015 10:25:44
Dominic
Hi,
danke so funktioniert es.
Eine Frage aber noch, bei der Zeile:
Anzahl = InputBox(Chr(13) & Chr(13) & "Bitte Anzahl der Zähl - Listen Kopien eintragen" & Chr(13) & "", "Druckt die angegebene Anzahl")
Kommt eine Fehlermeldung, wenn ich bei der Eingabe der gewünschten Kopien auf "Abbrechen" klicke.
"Laufzeitfehler 13: Typen unverträglich". Kannst du mir bei der Bereinigung dieses kleinen Fehlers noch helfen?
Danke im Voraus!

Anzeige
AW: VBA Druck + Anzahl Exemplare + autom. Nummerierung
01.04.2015 11:00:32
Klexy
Ach so, und die Nummerierung hatte ich vergessen.
Sub Drucken_Nummerieren()
With ActiveSheet.PageSetup
.Zoom = False
.PrintArea = "$A$6:$L$25"
.Orientation = xlPortrait
.Zoom = 75
.CenterHeader = "&""Comic Sans MS""&16""&I" & "Übersicht aller Werte"""
End With
Dim Anzahl As Integer, i As Integer
Anzahl = InputBox(Chr(13) & Chr(13) & "Bitte Anzahl eintragen" & Chr(13) & "", "Druckt die  _
angegebene Anzahl")
If Anzahl  5 Then
MsgBox "Es dürfen nur 1 - 5 Exemplare gedruckt werden"
Exit Sub
Else
i = 1
Do While i 

Anzeige
AW: VBA Druck + Anzahl Exemplare + autom. Nummerierung
01.04.2015 11:40:14
Klexy
Und noch einmal mit der Behebung der Fehlermeldung bei Abbruch:
Sub Drucken_Nummerieren()
With ActiveSheet.PageSetup
.Zoom = False
.PrintArea = "$A$6:$L$25"
.Orientation = xlPortrait
.Zoom = 75
.CenterHeader = "&""Comic Sans MS""&16""&I" & "Übersicht aller Werte"""
End With
Dim Anzahl As Variant, i As Integer
Anzahl = InputBox("" & Chr(13) & Chr(13) & "Bitte Anzahl eintragen" & Chr(13) & "", "Druckt die  _
angegebene Anzahl")
If StrPtr(Anzahl) = 0 Then
Exit Sub
End If
Anzahl = Round(Anzahl, 0)
If Anzahl  5 Then
MsgBox "Es dürfen nur 1 - 5 Exemplare gedruckt werden"
Exit Sub
Else
i = 1
Do While i 

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Druck: Anzahl Exemplare und automatische Nummerierung in Excel


Schritt-für-Schritt-Anleitung

Um in Excel eine Abfrage für die Anzahl der Druckexemplare zu erstellen und diese automatisch zu nummerieren, kannst du folgendes VBA-Skript verwenden:

Sub Drucken_Nummerieren()
    With ActiveSheet.PageSetup
        .Zoom = False
        .PrintArea = "$A$6:$L$25"
        .Orientation = xlPortrait
        .Zoom = 75
        .CenterHeader = "&""Comic Sans MS""&16""&I" & "Übersicht aller Werte"
    End With
    Dim Anzahl As Variant, i As Integer
    Anzahl = InputBox("" & Chr(13) & Chr(13) & "Bitte Anzahl eintragen" & Chr(13) & "", "Druckt die angegebene Anzahl")

    If StrPtr(Anzahl) = 0 Then
        Exit Sub
    End If

    Anzahl = Round(Anzahl, 0)
    If Anzahl < 1 Or Anzahl > 5 Then
        MsgBox "Es dürfen nur 1 - 5 Exemplare gedruckt werden"
        Exit Sub
    Else
        For i = 1 To Anzahl
            ' Hier erfolgt der Druck
            ActiveSheet.Cells(1, 1).Value = "Ausdruck " & i
            ActiveWindow.SelectedSheets.PrintOut Copies:=1
        Next i
    End If
End Sub

Dieses Skript fragt den Benutzer, wie viele Exemplare (1 bis 5) er drucken möchte, und nummeriert diese in Excel. Stelle sicher, dass du die richtige Druckerbezeichnung einfügst, wenn du einen bestimmten Drucker auswählen möchtest.


Häufige Fehler und Lösungen

Fehler 1: Laufzeitfehler 13 – Typen unverträglich

  • Dieser Fehler tritt auf, wenn du die Eingabe in der InputBox abbrichst. Stelle sicher, dass du den Typ der Variable Anzahl auf Variant setzt, um mit verschiedenen Eingabewerten umzugehen.

Fehler 2: Falsche Anzahl der Druckexemplare

  • Achte darauf, dass du die Eingabewerte korrekt überprüfst. Der Code sollte sicherstellen, dass die Anzahl zwischen 1 und 5 liegt.

Alternative Methoden

Eine alternative Methode zur Nummerierung der Druckexemplare könnte die Verwendung von Excel-Formeln sein, um die Werte in den Zellen zu nummerieren, bevor du den Druckvorgang startest. Du könntest eine Hilfsspalte nutzen, in der die Nummerierung erfolgt, und dann die gesamte Tabelle drucken.


Praktische Beispiele

Hier ein Beispiel, das zeigt, wie man die Anzahl der Druckexemplare anpassen kann:

  1. Nummerierung in der Fußzeile: Du kannst die Nummerierung auch in der Fußzeile der Seite platzieren, indem du den Code für die Fußzeile anpasst:
.ActiveSheet.PageSetup.CenterFooter = "Ausdruck " & i
  1. Drucken von Excel-Daten: Wenn du Daten aus einem bestimmten Bereich drucken möchtest, stelle sicher, dass die PrintArea korrekt gesetzt ist und die Daten in diesem Bereich vorhanden sind.

Tipps für Profis

  • Druckereinstellungen speichern: Es kann hilfreich sein, die Einstellungen für den Drucker zu speichern, um die Standarddrucker zu wechseln. Nutze dazu den Code:
Dim Standarddrucker As Variant
Standarddrucker = ActivePrinter
  • Fehlerprotokollierung: Implementiere eine Fehlerbehandlung, um die Benutzer über mögliche Fehler während des Druckvorgangs zu informieren, anstatt dass das Skript einfach abstürzt.

FAQ: Häufige Fragen

1. Wie kann ich die Gesamtzahl an Exemplaren aus einer Druckvorlage anpassen? Du kannst die PrintArea im VBA-Code anpassen, um sicherzustellen, dass der richtige Bereich gedruckt wird.

2. Funktioniert das Skript in allen Excel-Versionen? Das Skript sollte in den meisten modernen Excel-Versionen funktionieren, es ist jedoch ratsam, es in einer aktuellen Version zu testen, um sicherzustellen, dass alle Funktionen unterstützt werden.

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