VBA - Druckausgabe Einzeldruck zu Sammeldruck

Moderator: ModerationP

VBA - Druckausgabe Einzeldruck zu Sammeldruck

Beitragvon JTRR » 15. Sep 2018, 13:01

Liebe Excel und VBA-Experten,
ich habe folgendes Problem:

Ich habe auf einem Tabellenblatt 4 "Eintrittskarten", jede dieser trägt die Nummer 1. Dieses Tabellenblatt möchte ich ausdrucken, so dass mit jedem Druck die Zahl der 4 Eintrittskarten sich um 1 reduziert.

Folgenden Code habe ich gebastelt, leider nur steigende Nummerierung:

-------------------------------------------<pre>

Sub Drucken()
Dim i As Integer
Dim variable1 As Integer
variable1 = InputBox("Bitte geben Sie die Anzahl der Exemplare ein:", "EINGABE", "100")

For i = 1 To variabel

Range("C1") = i
ActiveSheet.Range("A1:G49").Select
Selection.PrintOut Copies:=1
Next i

Range("C1").Select
ActiveCell.FormulaR1C1 = "1"
End Sub</pre></pre>
-------------------------------------------

Leider funktioniert die Druckereinstellung "In umgekehrter Reihenfolge drucken" nicht weil jeder Druck ein einseitiger Einzelauftrag ist (meine Vermutung).

Entweder muss ein Sammeldruck erzeugt werden, oder "variabel to 1".

Nach dem Druck soll sich bitte die Zahl in C1 (Kartennummer) zurücksetzen auf das was vor Ausführung des Macros in C1 stand.

Ich hoffe ihr könnt mir helfen.

Vielen lieben Dank!
JTRR
 

Re: VBA - Druckausgabe Einzeldruck zu Sammeldruck

Beitragvon RPP63 » 15. Sep 2018, 13:19

Moin!
Die Schleife muss rückwärts laufen.
.Select ist mal wieder überflüssig
Variable1 war einmal falsch geschrieben (verwende Option Explicit, dann passiert Dir sowas nicht)
da die Schleife bei 1 endet, entfällt die letzte Zeile.
Code: Alles auswählen
Sub Drucken()
Dim i As Integer
Dim variable1 As Integer
  variable1 = InputBox("Bitte geben Sie die Anzahl der Exemplare ein:", "EINGABE", "100")
 
  For i = variable1 To 1 Step -1
    Range("C1") = i
    Range("A1:G49").PrintOut
  Next i
End Sub

Gruß Ralf
Benutzeravatar
RPP63
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9783
Registriert: 19. Okt 2012, 17:41
Wohnort: mitten im Pott

Re: VBA - Druckausgabe Einzeldruck zu Sammeldruck

Beitragvon Gast » 15. Sep 2018, 13:46

Moin RPP,
ich glaube ich habe mich nicht richtig ausgedrückt...

In der Zelle C1 habe ich eine manuell zu vergebene Zahl von der an gedruckt werden soll.

In der InputBox bestimme ich wieviele Ausdrucke ich haben möchte.

Wenn ich also in C1 "99" eintrage und in der InputBox "2" möchte ich dass 99 und 98 gedruckt wird und zwar genau in dieser Reihenfolge (Kleinste Nummer oben).

Danke für die suuuuuuuperschnelle Antwort.
Gast
 

Re: VBA - Druckausgabe Einzeldruck zu Sammeldruck

Beitragvon RPP63 » 15. Sep 2018, 13:56

Ich muss es ja nicht verstehen, sondern nur Deinen Wunsch umsetzen. :wink:
Code: Alles auswählen
For i = Range("C1") To (Range("C1") - Variable1) Step -1
   Range("A1:G49").PrintOut
   Range("C1") = i - 1
Next
Benutzeravatar
RPP63
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9783
Registriert: 19. Okt 2012, 17:41
Wohnort: mitten im Pott

Re: VBA - Druckausgabe Einzeldruck zu Sammeldruck

Beitragvon Gast » 15. Sep 2018, 14:52

Müssen musst du gar nichts :D

aber vielen lieben Dank für dein Engagement!

Das mit der absteigenden Nummerierung passt 100%ig, vielen lieben Dank dafür...

Aaaaber... :oops:

das Macro/der VBA-Code leitet mich durch eine Endlosschleife... wenn ich also in C1 100 eingebe und in der InputBox 3 eingebe dann gibt er mir 100, 99, 98, 97..... aus.

Zudem lässt er die letzte Zahl in C1 stehen wenn ich das gezwungenermaßen abbreche (Fehlercode 400).

Mein ursprünglicher Code war eigentlich so schon OK aber hat nur in die falsche Richtung gezählt...

Wärst du bitte nocheinmal so lieb und würdest mir helfen?

Vielen lieben Dank!
Gast
 

Re: VBA - Druckausgabe Einzeldruck zu Sammeldruck

Beitragvon Gast » 15. Sep 2018, 14:58

Ah nein ich habe gelogen :oops:

Code: Alles auswählen
Sub Drucken()
Dim i As Integer
Dim variable1 As Integer
  variable1 = InputBox("Bitte geben Sie die Anzahl der Exemplare ein:", "EINGABE", "100")
 
For i = Range("C1") To (Range("C1") - variable1) Step -1
   Range("A1:G49").PrintOut
   Range("C1") = i - 1
Next

    Range("C1").Select
    ActiveCell.FormulaR1C1 = "100"
End Sub


Führt nun zu dem (fast) richtigen Ergebnis.

Er nimmt den Wert von C1, druckt das was ich in die InputBox schreibe +1 weiteres Exemplar, zählt dabei rückwärts trägt dies in C1 ein und überschreibt nach der Aktion C1 mit 100.

Wenn man nun nur noch das Exemplar was zu viel raus kommt nicht mehr hätte dann wäre es Perfekt!
Gast
 

Re: VBA - Druckausgabe Einzeldruck zu Sammeldruck

Beitragvon Gast » 15. Sep 2018, 16:07

Vielen lieben Dank Ralf!

Deine Lösung reicht mir allemal aus, das eine zusätzliche ist jetzt auch kein Beinbruch. Gut dass es Leute gibt die solch fundiertes Fachwissen haben wie du, kann dir garnicht genug danken!

8-) :) :!:
Gast
 


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Andreas1963, MisterBurns und 22 Gäste