Fortlaufende Nummerierung beim drucken (2000)

Von: , Frage gestellt am Mo, 17. Aug 2009

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

7 Antworten zu dieser Frage

  1. Antwort von nach 14 Minuten 0 hilfreich
    Re: Fortlaufende Nummerierung beim drucken (2000)

    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

    • Antwort von nach 36 Minuten 0 hilfreich
      Re^2: Fortlaufende Nummerierung beim drucken (2000

      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

      • Antwort von nach einer Stunde 0 hilfreich
        Re^3: Fortlaufende Nummerierung beim drucken (2000

        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 :-), hier kommt keine Fehlermeldung bei 0:

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

        Gruß
        Reinhard

        • Antwort von nach 3 Stunden 0 hilfreich
          Re^4: Fortlaufende Nummerierung beim drucken (2000

          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 :-)) 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

          • Antwort von nach 3 Stunden 0 hilfreich
            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

        • Antwort von nach 19 Stunden 0 hilfreich
          Re^4: Fortlaufende Nummerierung beim drucken (2000

          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 :-), 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

          • Antwort von nach 19 Stunden 0 hilfreich
            Re^5: Fortlaufende Nummerierung beim drucken (2000

            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

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!