Fortlaufende Nummerierung beim drucken (2000)

Guten Tag,

Und zwar habe ich ein Problem.
Ich habe mir folgendes Makro aus teilstücken erarbeitet. Funktioniert auch soweit. Leider setzt es den Counter pro Click immer nur einmal hoch.

Ich hätte aber gerne, bei der Abfrage der Kopien, dass dort die Nummer fortlaufend erhöht wird.

Quasi 600-610 10 Kopien möchte ich
-> Excel Druckt 601,602,603,…,610-> und erhöht dabei den counter innerhalb der Datei welche am ende nun 610 beträgt.

Bekomm es nur nicht hin irgendwie, bin trotz Forensuche nicht weitergekommen, eher verwirrter geworden ^^

Sub NrDrucken()
Dim Kopien As Variant
[G10] = [G10] + 1
If MsgBox(„Drucken?“, vbYesNo, „Drucken“) = vbYes Then
Do
Kopien = InputBox(„Anzahl Kopien“, „Drucken“, 1)
If StrPtr(Kopien) = 0 Then Exit Sub
If IsNumeric(Kopien) Then Exit Do

MsgBox „Bitte eine Zahl eingeben!“, vbExclamation, „Hinweis“
Loop
ActiveSheet.PrintOut From:=1, To:=1, Copies:=CLng(Kopien)
End If
End Sub

Wäre dankbar für jeden Ansatz der mir weiterhelfen kann

Im voraus mit dankenden Grüßen

Marcus

Hallo Marcus,

Leider setzt es den Counter pro
Click immer nur einmal hoch.

Ich hätte aber gerne, bei der Abfrage der Kopien, dass dort
die Nummer fortlaufend erhöht wird.

wo dort?

Quasi 600-610 10 Kopien möchte ich
-> Excel Druckt 601,602,603,…,610-> und erhöht dabei den
counter innerhalb der Datei welche am ende nun 610 beträgt.

Der Counter ist [G10]?

Btw: Was ist StrPtr(…), was selbst geschriebenenes oder was eingebautes?
Mein XL2000 kennt das nicht.

Gruß
Reinhard

Ist quasi alles zusammen kopiert und überarbeitet, zumindest das was ich über den Debugger ausfindig machen konnte.

Stell es dir wie einen Flickenteppich vor. Aber, das wichtigste (für mich ) es funktioniert erstmal …soweit.

StrPtr ist dafür da, wenn ich mich nicht täusche zu überprüfen ob in der MessageBox eine Eingabe über die Anzahl der Kopien vorhanden ist, wenn nicht, dann beendet er die MessageBox. Oder ach, ich hab halt nicht soviel Ahnung, leider.

Und ja, der Counter ist [G10]=[G10]+1, darauf baut das Ganze auf.
Ich weis dass ich eigentlich nur eine Schleife bräuchte, welche in der angegebenen Menge die Schleife durchläuft, währenddessen den Counter hochsetzt. Nur wie, da hab ich keine Ahnung.

PS grad getestet, StrPtr bringt eine Fehlermeldung wenn ich eine 0 eingebe…bringt also nicht das was ich wollte.

Gruß

Marcus

Hallo Marcus,

StrPtr ist dafür da, wenn ich mich nicht täusche zu überprüfen
ob in der MessageBox eine Eingabe über die Anzahl der Kopien
vorhanden ist, wenn nicht, dann beendet er die MessageBox.

*hmmh* ich sehe das nicht so, ich habe eher den Eindruck StrPtr den ich mir als StringPointer übersetze auf die Adresse zielt wo die Inputeingabe steht.

@Rainer, ich weiß ganz genau, es ging um die API-Funktion copymemory, da hattest du oder Alex VB-Code. Den umzuschreiben nach Va ging nicht, es hing nur an einem Pointer den es in Vba halt nicht gibt.
StrPtr erinnert mich stark dran.
Aber wenn es den doch in Vba gibt, wieso klappte es damals nicht *kopfkratz*
Egal, vielleicht hieß der damalige Pointer irgendwie anders.
Und Zu StrPtr(), ich hab grad nachgefragt andernorts was das für ein Ding in Vba ist.

Und ja, der Counter ist [G10]=[G10]+1, darauf baut das Ganze
auf.
Ich weis dass ich eigentlich nur eine Schleife bräuchte,
welche in der angegebenen Menge die Schleife durchläuft,
währenddessen den Counter hochsetzt. Nur wie, da hab ich keine
Ahnung.

Ich versuche es mal mit meinen Worten.

Du willst irgendwie, wie? eine zahl z.B. 10 vorgeben, daraufhin sollen 10 Kopien gedruckt werden.
Diese zahl soll zum Wert in G10 addiert werden?

Sehe ich das so richtig?

PS grad getestet, StrPtr bringt eine Fehlermeldung wenn ich
eine 0 eingebe…bringt also nicht das was ich wollte.

*hmmh* ungläubiger Thomas ist mein Zweitnick :smile:, hier kommt keine Fehlermeldung bei 0:

Sub tt()
Dim Kopien
Kopien = InputBox(„Anzahl Kopien“, „Drucken“, 1)
MsgBox StrPtr(Kopien)
End Sub

Gruß
Reinhard

Hallo Reinhard,

@Rainer, ich weiß ganz genau, es ging um die API-Funktion
copymemory, da hattest du oder Alex VB-Code. Den umzuschreiben
nach Va ging nicht, es hing nur an einem Pointer den es in Vba
halt nicht gibt.

ja, auch. Wir haben mit verschiedenen Pointern hantiert.
Der StrPtr (ich übersetze das auch mit StringPointer :smile:) zeigt auf die Adresse im Speicher, an der die Zeichen abgelegt sind. Der VarPtr zeigt auf die Adresse, an der der Stringpointer steht. Zur Verwaltung von Stringarrays werden beide benötigt.

Du hast Recht, eins von Beiden hat in VBA gefehlt, deshalb hat die Manipulation des Stringarrays mit CopyMemory nicht funktioniert.

Gruß Rainer

StrPtr VarPtr in vba

Du hast Recht, eins von Beiden hat in VBA gefehlt, deshalb hat
die Manipulation des Stringarrays mit CopyMemory nicht
funktioniert.

hallo Rainer,

danke dir, dann war das der Varptr.

Gruß
Reinhard

Huhu,

Du willst irgendwie, wie? eine zahl z.B. 10 vorgeben,
daraufhin sollen 10 Kopien gedruckt werden.
Diese zahl soll zum Wert in G10 addiert werden?

Sehe ich das so richtig?

Richtig, beispielsweise ist die 1000 Vorgegeben bzw eingetragen.
Nach starten des Makros möchte ich 10 Kopien machen und mit eben jeder dieser Kopien wird dieser Counter um 1 hochgesetzt bis er schließlich 1010 erreicht. Gedruckt sowie virtuell. =)

PS grad getestet, StrPtr bringt eine Fehlermeldung wenn ich
eine 0 eingebe…bringt also nicht das was ich wollte.

*hmmh* ungläubiger Thomas ist mein Zweitnick :smile:, hier kommt
keine Fehlermeldung bei 0:

Sub tt()
Dim Kopien
Kopien = InputBox(„Anzahl Kopien“, „Drucken“, 1)
MsgBox StrPtr(Kopien)
End Sub

Laufzeitfehler 1004, Zahl muss zwischen 1 und XXX liegen. *stichel*

ActiveSheet.PrintOut From:=1, To:=1, Copies:=CLng(Kopien)

Das markiert er mir dann. Wie gesagt bin absoluter anfänger und wühle mich eigentlich mit gefährlichem Halbwissen durch die Szenerie, auch wenns spass macht muss ich gestehen.

Und achja, netter Dialog zwischen Euch ^^ habe nichts verstanden, zumindest nicht viel.

Grüßte mit besten Dank im voraus

Marcus

Sub tt()
Dim Kopien
Kopien = InputBox(„Anzahl Kopien“, „Drucken“, 1)
MsgBox StrPtr(Kopien)
End Sub

Laufzeitfehler 1004, Zahl muss zwischen 1 und XXX liegen.
*stichel*

ActiveSheet.PrintOut From:=1, To:=1, Copies:=CLng(Kopien)

Das markiert er mir dann. Wie gesagt bin absoluter anfänger
und wühle mich eigentlich mit gefährlichem Halbwissen durch
die Szenerie, auch wenns spass macht muss ich gestehen.

Hallo Stefan,

also ist mein Code okay.

Du sagst Excel es soll Null Exemplare ausdrucken, deshalb kriegste die Fehlermeldung.

Nach dem anderen kann ich erst heute Abend schauen.

Gruß
Reinhard