Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Quittungsnummer

Quittungsnummer
03.11.2021 18:10:38
Milan
Hallo Leute,
ich habe vor eine Weile eine VBA Lösung von Hajo bekommen. Es handelt sich um Vergabe von Rechnungsnummern +1 in Zahlenformat "YY":
An Jahresanfang soll Zähler mit dem neuen Jahr von vorne beginnen zB. jetzt ist Jahr 2021, Zählernummer begint mit 21000 und danach +1, am Anfang des 2022 begint von vorne aber mit 22000 usw. Das funktioniert perfekt. Hier Original VBA Code:

Sub NeueRechnungsNummer()
If Left(Range("A1"), 2)  Format(Date, "YY") Then
Range("A1") = Format(Date, "YY") & "000"
Else
Range("A1") = Format(Date, "YY") & Format(Right(Range("A1"), 3) + 1, "000")
End If
End Sub
Jetzt habe ich ähnliche Ausgangsposition, ich habe eine Quittungsvorlage in der von Tag zu Tag unterschiedlich an Anzahl werden Quittungen ausgegeben.
Ich habe die selbe Code benutzt die auch funktioniert aber Problem ist wenn ich den Zähler lösche spricht neues Jahresanfang der Zähler startet richtig aber beim zweitem und drittem klick zählt nicht richtig und ab da zählt richtig aber mit falschen Zahlen. Ich habe viele Versuche aber ohne Ergebnis und jetzt muss ich leider wieder um Hilfe bitten.
Angepasste Code und Beispieltabelle liegt bei
Beispieltabelle: https://www.herber.de/bbs/user/148931.xlsm
Die Code:

Sub QuittungsNummer()
If Left(Worksheets("Quittung").Range("O1"), 2)  Format(Date, "YY") Then
Worksheets("Quittung").Range("O1") = Format(Date, "YY") & "0000" 'Startnummer kann man ersetzen
Else
Worksheets("Quittung").Range("O1") = Format(Date, "YY") & Format(Right(Worksheets("Quittung").Range("O2"), 3) + (Right(Worksheets("Quittung").Range("O2"), "0000")))
End If
End Sub
Danke und Gruß

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Quittungsnummer
03.11.2021 19:11:30
Yal
Hallo Milan,
die Funktion "Right" liefert die rechte Teil einer Zeichenkette. 2 Parameter werden benötigt:
_ die Zeichenkette, oder die Variable, die die Zeichenkette beinhaltet
_ die Anzahl von Zeichen, die zurückgegeben werden sollen, also ein Zahl
Aus

Right(.Range("O2"), "0000")
Mache

Right(.Range("O2"), 4)
Noch dazu: damit bekommst Du in O1 ein Zahl, dass um 1 höher ist als in O2. Aber da O2 sich nie ändert, passiert nicht viel.
Wenn man Objekt-Variable verwendet, bekommt man -vielleicht- eine bessere Übersicht:

Sub QuittungsNummer()
Dim Ziel As Range
Dim Quelle As Range
Const StartNr = 0
Set Ziel = Worksheets("Quittung").Range("O1")
Set Quelle = Worksheets("Quittung").Range("O2")
If Left(Ziel, 2)  Format(Date, "YY") Then
Ziel = Format(Date, "YY") & Format(StartNr, "000")  'Startnummer kann man ersetzen
Else
Ziel = Format(Date, "YY") & Format(Right(Quelle, 3) + 1, "000")
End If
End Sub
Im Gegenteil zu einer numerische Variable, bekommt ein Objekt-Variable nicht das Objekt selbst sondern seine Adresse. Es wird mit "Set" gesetzt. Es ist eine Art von Alias. Nach dem
Set Ziel = Worksheets("Quittung").Range("O1")
sind
Ziel = 3
und
Worksheets("Quittung").Range("O1") = 3 genau gleich.
VG
Yal
Anzeige
AW: Quittungsnummer
03.11.2021 19:44:12
Milan
Hallo Yal,
funktioniert excelent. Wer kann, der kann und super erklärt. Damit habe ich noch eine Dauerlösung.
Vielen. vielen Dank!
Vielen Dank für die Rückmeldung owT
03.11.2021 20:51:54
Yal
AW: Quittungsnummer
04.11.2021 11:10:14
Herbert_Grom
Hallo Milan,
und in O2 reicht diese Formel: =MAX(B:B;H:H)+1
Servus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige