Mit VBA drucken und sortieren

Hallo zusammen,

ich habe ein Excel Tabellenblatt, in welchem ich mittels VBA eine Fortlaufende Nummer generiere und die Anzahl ausdrucke (gefunden im Netz), läuft.

Nun möchte ich das diese „Einzeldrucke“ in umgekehrter Reihenfolge ausgedruckt werden.
Über die Druckereinstellungen hab ich es versucht aber das es Einzeldrucke sind kann es der Drucker wohl nicht verarbeiten.
Welche Möglichkeit hab ich nun noch per VBA, bzw. wie kann ich den VBA ändern damit das hierüber geschieht?

Sub Druck()

Dim wert As String

x = InputBox(„Bitte geben Sie die Anzahl der Exemplare ein:“, „Wie viele Exemplare:“, „1“)

For i = 1 To x
ActiveWindow.SelectedSheets.PrintOut
wert = Range(„AS4“).Value
Range(„AS4“).Value = wert + 1

Next i
End Sub

Gruss Micha

Moin,

WAS sind Einzeldrucke?

Zu einer Problemstellung gehört die Aussage, was passieren soll und was wirklich passiert.

Das Hantieren mit wert dürfte für den Druck übrigens belanglos sein. So wie es da steht werden die selektierten Blätter x-mal gedruckt.

Gruß
Ralf

Hallo Micha

Ich verstehe Dich auch nicht recht: «diese „Einzeldrucke“ in umgekehrter Reihenfolge»

Ist es das: Du hast in einer Datei bestimmte Tabellen, die Du x-fach ausdrucken möchtest:
Tabelle1, Tabelle2, Tabelle5, Tabelle6
Der Ausdruck soll aber in umgekehrter Reihenfolge geschehen: zuerst Tabelle6 x-mal, dann Tabelle5 x-mal, dann Tabelle2 x-mal und schliesslich Tabelle1 x-mal.

Oder meinst Du folgendes: Du hast eine bestimmte mehrseitige Tabelle. Beim Drucken soll zuerst die letzte Seite dieser Tabelle gedruckt werden, dann die zweitletzte usw. Am Schluss die erste?

Oder ganz was anderes?

Grüsse Niclaus

Hallo,

verstehe ich den Code Schnipsel richtig…
Es wird ein Arbeitsblatt mehrmals gedruckt und die Ausdrucke unterscheiden sich nur im Wert in der Zelle („AS4“)?
Dieser Wert wird entsprechend der Eingabe hochgezählt?
Die Druckausgabe möchtest du mit absteigenden Werten erhalten?

Wenn 3mal Ja dann:

x = InputBox(„Bitte geben Sie die Anzahl der Exemplare ein:“, „Wie viele Exemplare:“, „1“)

For i = x To 1 Step -1
ActiveWindow.SelectedSheets.PrintOut

Range(„AS4“).Value = Range(„AS4“).Value + i

Next i
End Sub

Hope this helps
Peter

Moin,

nochmal zum besseren Verstehen es ist ein zweiseitiges Tabellenblatt was sich nur in der Zelle „AS4“ im Wert unterscheidet. wenn ich mein VBA benutze gebe ich die Anzahl Exemplare ein und in der Zelle AS4 wird lediglich die Zahl um die angegebenen Exemplare erhöht und dann gedruckt. Nun möchte ich das diese Ausdrucke in umgekehrter Reihenfolge aus dem Drucker kommen(damit man sie nicht per hand umsortieren braucht). Heisst in Zelle AS4 steht zb. 200 ich möchte 15 Ausdrucke dann erhöht sich der Wert immer um eins und der Druck geht raus und das soll dann in umgekehrter Reihenfolge geschehen.

Gruss Micha

Hallo Micha

Das Makro macht folgendes:

In AS4 steht z. B. 200.
Nun willst Du 3 Exemplare in umgekehrter Reihenfolge drucken.
In AS4 steht nun 203 und das 3. Exemplar der Tabelle wird ausgedruckt.
Dann steht in AS4 202 und das 2. Exemplar wird ausgedruckt.
Dann steht in AS4 201 und das 1. Exemplar wird ausgedruckt.
Ganz am Schluss steht in AS4 neu 203.

Willst Du das? - Grüsse Niclaus

Sub DruckV1()
x = InputBox("Bitte geben Sie die Anzahl der Exemplare ein.", _
    "Wie viele Exemplare?", "1")
        If x = "" Then Exit Sub
wert0 = Range("AS4").Value
For i = x To 1 Step -1
    Range("AS4").Value = wert0 + i
    ActiveWindow.SelectedSheets.PrintOut
Next
Range("AS4").Value = wert0 + x
End Sub

Hallo Niclaus

so wie Du es beschrieben wäre es das was ich möchte, aber Code funktioniert bei mir nicht , was die umgekehrte Reihenfolge angeht. Muss ich hier noch etwas bestimmtes einstellen?

Gruß Micha

Hallo Micha

a) Du startest das Makro - gibst z. B. 3 Exemplare ein.
b) Und jetzt beschreibe bitte genau, was dann passiert - so wie ich mir oben auch die Mühe gemacht habe, alles möglichst genau zu beschreiben.
c) Wie sollte es statt dessen sein?

Etwas bestimmtes einstellen

d) Wie sind denn die Druckereinstellungen?

Grüsse Niclaus

Hallo Micha

Ich habe mir überlegt, ob Du vielleicht folgendes meinst: Von Deinem mehrseitigen Tabellenblatt soll zuerst die letzte Seite gedruckt werden, dann die zweitletzte usw. und ganz am Schluss die erste?

Es gibt Drucker, bei denen man das einstellen kann - z. B. beim HP-Laserjet 2100:
Drucken - Seite einrichten - Blatt – Optionen – Von hinten nach vorne.

Bei jedem Drucker kann man das auch mit folgendem Makro:

Sub DruckVonHinten()
NumPages = ExecuteExcel4Macro("GET.DOCUMENT(50)")
For j = NumPages To 1 Step -1
    ActiveSheet.PrintOut From:=j, To:=j
Next j
End Sub

Wenn Du mein erstes Makro „DruckV1“ mit diesem zweiten Makro „DruckVonHnten“ kombinieren willst, dann ersetze im ersten Makro die Zeile

    ActiveWindow.SelectedSheets.PrintOut
mit folgender Zeile:
    Call DruckVonHinten

Ich hoffe, das war’s. Grüsse Niclaus

Hallo Niclaus

hab es so umgebaut aber dann hängt sich Excel auf woran liegt das ?

Und was sagt es, bevor es hängt?
Und wie heissen denn jetzt die beiden Makros?
Grüsse Niclaus