Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Fortlaufende Belegnummer Format
#1
Hallo liebe Forummitglieder,

ich bitte um kurze Hilfe mit einem VBA Code. 

Ich möchte in einer Zelle folgende fortlaufende Belegnummer anzeigen:"2023_001" usw.
Mit folgendem Code kann ich die Belegnummer wie folgt (fotlaufend) anzeigen: "01/2023" usw. 

'letzte Zeile ermitteln

lngLetzte = Sheets(strObjblatt).Cells(65536, 1).End(xlUp).Row

'Auswerten der letzten Belegnummer (Angebot bzw. Rechnung)
intPos1 = InStr(Sheets(strObjblatt).Cells(lngLetzte, 2), "/")
intLfdnr = Format(Left(Sheets(strObjblatt).Cells(lngLetzte, 2), intPos1 - 1), "00")
intJahr = Mid(Sheets(strObjblatt).Cells(lngLetzte, 2), intPos1 + 1, intPos1 + 1)

'Neu generierte Belegnummer in das Tabellenblatt "Erfassung" schreiben
Sheets("Erfassung").Range("B19").Value = Format(intLfdnr + 1, "00") & "/" & intJahr


Mein Problem ist eben, dass sich die Belegnummer nach Abänderung des Codes nicht mit Unterstrich im folgenden Format anzeigen lässt "2023_001" usw.

Vielleicht hat hier jemand einen Vorschlag für mich.

Vielen Dank!
Zitieren
#2
Hallo.
als Vorschlag
Sheets("Erfassung").Range("B19").Value = intJahr & "_" & Format(intLfdnr + 1, "000")
Gruß der AlteDresdner (Win11, Off2021)
Zitieren
#3
Vielen lieben Dank für deinen Vorschlag.

Leider kann ich mit dieser Zeile alleine nicht viel anfangen und es funktioniert nicht ganz.

Ich muss hier vermutlich auch bei den folgenden CodeZeilen Änderungen durchführen, allerdings habe ich hier noch keine gute Lösung parat:

'Auswerten der letzten Belegnummer (Angebot bzw. Rechnung)
intPos1 = InStr(Sheets(strObjblatt).Cells(lngLetzte, 2), "/")
intLfdnr = Format(Left(Sheets(strObjblatt).Cells(lngLetzte, 2), intPos1 - 1), "00")
intJahr = Mid(Sheets(strObjblatt).Cells(lngLetzte, 2), intPos1 + 1, intPos1 + 1)

Bitte um weitere Hilfe.

Vielen Dank!
Zitieren
#4
Hallo,
intLfdnr müsste als Integer oder Long deklariert sein,der Code ist ungetestet:

'Auswerten der letzten Belegnummer (Angebot bzw. Rechnung)
intPos1 = InStr(Sheets(strObjblatt).Cells(lngLetzte, 2), "_")
intLfdnr = val(Mid(Sheets(strObjblatt).Cells(lngLetzte, 2), intPos1 + 1)
intJahr = Left(Sheets(strObjblatt).Cells(lngLetzte, 2), intPos1 - 1)

'Neu generierte Belegnummer in das Tabellenblatt "Erfassung" schreiben
Sheets("Erfassung").Range("B19").Value = intJahr & "_" & Format(intLfdnr + 1, "000")

Nicht ganz klar ist mir, warum du die letzte Zeile im Blatt strObjBlatt suchst, das Ergebnis aber hart in B19 in "Erfassung" schreibst.
Zur Klärung könntest du eine anonymisierte Datei posten...
Gruß der AlteDresdner (Win11, Off2021)
Zitieren
#5
Hallo,

der Code hat funktioniert, vielen lieben Dank. Ich habe nur bei der folgenden Zeile "intLfdnr = val(Mid(Sheets(strObjblatt).Cells(lngLetzte, 2), intPos1 + 1)" dieses "val" weggelassen.

Die letzte Zeile im Blatt strObjBlatt suche ich deshalb, weil hier nur die Ergebnisse aus Angebot, Auftrag und Rechnung eingetragen werden, die Hauptmaske ist im Tabellenblatt Erfassung gemacht.

Danke noch einmal für deine Hilfe.

GLG
jk
Zitieren
#6
Hi, wenns klappt ist alles Ok. Frohe Ostern!
Gruß der AlteDresdner (Win11, Off2021)
Zitieren
#7
Danke dir! Frohe Ostern!
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions