997 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Forum
Habe seit langen mal wieder ein neues Anliegen.
Ich hatte mit viel Hilfe aus diesem Forum mir bereits eine Excel Datei zum Drucken von Etiketten Erstellt, diese möchte ich wie folgt ändern.

Verschiedene Etiketten-Seriendrucke A – B – .usw. werden Vorbereitet ca. 10 werden es.
Rechts neben den jeweiligen Etiketten in ( H8, H13, .usw.) möchte ich einstellen können, die Anzahl der zu Druckenden Etiketten.
Das Makro soll dann die entsprechende Anzahl der Etiketten ausdrucken beginnend mit der Roll Nr. in ( G6,G16,.usw).
Es soll aber nach dem Druck des ersten Etiketts des jeweiligen
Seriendrucks (A-B-.usw.)die Roll Nr. um 1 erhöhen werden, bis die gewünschte
Anzahl der zu Druckenden Etiketten erreicht ist.

Als Downlod eine Datei wie es aussehen sollte.
Sie enthält Makros die möglichst geändert werden sollten weil ich die restlichen Funktionen behalten Möchte!

Download Neue Kundenetiketten.xlsm


Mit besten Grüßen
(Danke an alle die hier im Forum anderen helfen)
Hans

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Hans,

hier mal ein Beispiel, wie man das lösen könnte beispielhaft für deinen Seriendruck A:

Global rngRoll As Range
Global lngAnzahl As Long

Sub Seriendruck_A()

'Druckbereich festlegen
ActiveSheet.PageSetup.PrintArea = "$A$2:$G$10"

'Wo steht Roll-Nummer
Set rngRoll = ActiveSheet.Range("G6")

'Anzahl der zu druckenden Etiketten einlesen
lngAnzahl = ActiveSheet.Range("H3").Value

'Drucken Makro wird aufgerufen
Call drucken

Range("F6").Select

End Sub

Sub drucken()

Dim lngRoll As Long
Dim i As Long

'Uhrzeit aktualisieren
Calculate

'Standarddrucker merken
StdDrucker = Application.ActivePrinter

'Neuen Drucker bestimmen
Application.ActivePrinter = "\\PEI-VPW-SR1-002\PEI-PPB-BLC-001 auf Ne03:"

'1. Roll-Nummer einlsen
lngRoll = rngRoll.Value

'Ausdrucken
For i = 0 To lngAnzahl - 1
'Roll-Nummer aktualisieren
rngRoll.Value = rngRoll.Value + i
'drucken
ActiveSheet.PrintOut Copies:=1
Next i

'Druckbreich aufheben
ActiveSheet.PageSetup.PrintArea = ""

'Wieder Standarddrucker einstellen
ActivePrinter = StdDrucker

End Sub


Deiner Schaltfläche bei Seriendruck A weist du das Makro Seriendruck_A zu. Für die restlichen Seriendrucke B bis ?? musst du nur das Makro Seriendruck A kopieren, entsprechend ändern und den jeweiligen Schaltflächen zuweisen. Für Seriendruck B würde es dann so aussehen:

Sub Seriendruck_B()

'Druckbereich festlegen
ActiveSheet.PageSetup.PrintArea = "$A$12:$G$20"

'Wo steht Roll-Nummer
Set rngRoll = ActiveSheet.Range("G16")

'Anzahl der zu druckenden Etiketten einlesen
lngAnzahl = ActiveSheet.Range("H13").Value

'Drucken Makro wird aufgerufen
Call drucken

Range("F16").Select

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O
Besten Dank für deine Hilfe.
Das Mako ist gelaufen, aber ich hätte gern noch etwas geändert.
Die Roll-Nummer in (G6) sollte sich nach dem Ausdruck nicht verändern, so dass man dieselben Etikettenserie mehrmals ausdrucken kann.

Gruß
Hans
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Hans,

probier mal das folgende Druck-Makro dafür:

Sub drucken()

Dim lngRoll As Long
Dim i As Long

'Uhrzeit aktualisieren
Calculate

'Standarddrucker merken
StdDrucker = Application.ActivePrinter

'Neuen Drucker bestimmen
Application.ActivePrinter = "\\PEI-VPW-SR1-002\PEI-PPB-BLC-001 auf Ne03:"

'1. Roll-Nummer einlsen
lngRoll = rngRoll.Value

'Ausdrucken
For i = 0 To lngAnzahl - 1
'Roll-Nummer aktualisieren
rngRoll.Value = lngRoll + i
'drucken
ActiveSheet.PrintOut Copies:=1
Next i

rngRoll.Value = lngRoll

'Druckbreich aufheben
ActiveSheet.PageSetup.PrintArea = ""

'Wieder Standarddrucker einstellen
ActivePrinter = StdDrucker

End Sub


Nebenbei noch einen Fehler beseitigt :-( .

Gruß

M.O.
0 Punkte
Beantwortet von
Hy M.O
Läuft super, genau wie ich es mir vorgestellt habe :-) :-) ……


(Nochmals Danke an alle die hier im Forum anderen helfen)
Mit besten Grüßen
Hans
...