Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1792to1796
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

Nummerierung VBA Tabelle

Nummerierung VBA Tabelle
19.11.2020 11:34:51
Stanley
Hallo Zusammen,
ich bin neu im Forum und meine Kenntnisse VBA betreffend sind sehr bescheiden.
Ich habe beispielhaft ein kleines Rechnungsbuch erstellt.
https://www.herber.de/bbs/user/141698.xlsx
Ich benötige bitte eine Lösung für eine Laufende Nummer in der ersten Spalte der Tabelle.
Die Nummer sollte eine Kombination auf dem Jahr des Datum jeweiligen Datums sein und einer 5-stelligen fortlaufenden Nummer.
ZB. 2020-00001
Mit jedem neuen Jahr sollte die Nummerierung wieder bei 00001 beginnen.
Wenn man die Tabelle filtert oder sortiert, muss die Nummer mit sortiert werden. D.h. alle Daten einer Zeile der Tabelle muss fix verbunden sein.
Ich hoffe, dass ich es einigermaßen verständlich ausgedrückt habe.
Kann mir jemand diese Nummerierung mit VBA programmieren?
Vielen Dank für die Hilfe.

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nummerierung VBA Tabelle
19.11.2020 12:09:12
ralf_b
Code kopieren, rechte Maustaste auf Blattnamen, code anzeigen, einfügen
adaptiert aus diesem Thread
https://www.ms-office-forum.net/forum/showthread.php?t=306731
Private Sub Worksheet_Change(ByVal Target As Range)
'Prüft, ob eine Nummer in Spalte A vorhanden ist und
'trägt diese ein, wenn nicht:
Dim c As Range
If Not Intersect(Target.Rows, Me.Range("4:" & Rows.Count)) Is Nothing Then
For Each c In Intersect(Target.Rows, Me.Range("4:" & Rows.Count))
If IsEmpty(Me.Cells(c.Row, 1)) Then
If WorksheetFunction.CountBlank(Me.Rows(c.Row)) 

Anzeige
AW: Nummerierung VBA Tabelle
19.11.2020 12:15:37
Herbert_Grom
Hallo Stanley,
davon ausgehend, dass deine Daten so angeordnet sind wie in deiner Datei und dass es nicht mer als 99.999 werden, sollte es so funktionieren:
Sub LfdNrAktualisieren()
Dim sJahr$, sLfdNr$, i%, iRowIn%, sNuller$
sJahr = Year(CDate([B4]))
iRowIn = IIf(IsEmpty(Range("C9999")), Range("C9999").End(xlUp).Row, 9999) - 1
sNuller = "0000"
For i = 4 To iRowIn
If i - 3 > 9999 Then sNuller = ""
If i - 3 > 999 Then sNuller = "0"
If i - 3 > 99 Then sNuller = "00"
If i - 3 > 9 Then sNuller = "000"
If Cells(i, 2).Value = "" Then Exit For
Cells(i, 1).Value = sJahr & "-" & sNuller & i - 3
Next i
End Sub
Servus
Anzeige
AW: Nummerierung VBA Tabelle
19.11.2020 12:20:03
Herbert_Grom
Hallo Stanley,
nimm lieber das, denn 99999 ist jenseits von "Integer":
Sub LfdNrAktualisieren()
Dim sJahr$, sLfdNr$, l&, lRowIn&, sNuller$
sJahr = Year(CDate([B4]))
lRowIn = IIf(IsEmpty(Range("C99999")), Range("C99999").End(xlUp).Row, 99999) - 1
sNuller = "0000"
For l = 4 To lRowIn
If l - 3 > 9999 Then sNuller = ""
If l - 3 > 999 Then sNuller = "0"
If l - 3 > 99 Then sNuller = "00"
If l - 3 > 9 Then sNuller = "000"
If Cells(l, 2).Value = "" Then Exit For
Cells(l, 1).Value = sJahr & "-" & sNuller & l - 3
Next l
End Sub
Servus
Anzeige
AW: Nummerierung VBA Tabelle
19.11.2020 12:43:13
Stanley
Hallo Herbert,
vielen Dank für die schnelle Antwort.
Das geht schon in die richtige Richtung. Allerdings wird das Jahr 2021 z.B. in B7 nicht erkannt.
Ein weiteres Problem: Wenn ich die die Liste sortiere, wird die Nummer mit sortiert. Das ist in Ordnung und auch so gewollt. Aber füge ich dann Zeilen hinzu und führe das Makro wieder aus, werden die Nummern neu zugeordnet. Das geht nicht. Einmal einer Rechnung zugeordnet muss die Nummer immer fix mit der Rechnung "verheiratet" sein. Egal wie man sortiert oder etwas hinzufügt
Es wäre toll wenn du dafür auch eine Lösung hättest.
Vielen Dank.
Anzeige
AW: Nummerierung VBA Tabelle
19.11.2020 15:31:04
Herbert_Grom
Hallo Stanley,
dann musst du für eine neue Nr eben immer nach der bisher größten suchen und diese dann um eins erhöhen. Dann kannst du auch neue Zeilen/Daten einfügen. Wenn du nicht weißt wie, dann sag Bescheid. Und beim nächsten Mal bitte gleich sagen, dass du die Daten erweitern und sortieren willst, erspart uns Arbeit! Danke!
Servus
AW: Nummerierung VBA Tabelle
20.11.2020 08:37:49
Stanley
Vielen Dank.
Ich gelobe Besserung ;)
Wo steht geschrieben, …
19.11.2020 12:58:51
RPP63
… dass eine Rechnungsnummer fortlaufend sein muss, Stanley?
Die Finanzbehörden verlangen eindeutige ReNr.
Aus diesem Grund sieht sie bei mir so aus:
yymmdd_hhnn
Wenn Du die Rechnung dann gem. obigem Stempel speicherst, wird sie auch im Explorer chronologisch sortiert.
Gruß Ralf
Anzeige
AW: Wo steht geschrieben, …
19.11.2020 14:35:23
Stanley
geschrieben steht dies nirgendwo. Bei uns ist dies jedoch für die Ablage wichtig, dass Rechnungen nach laufender Nummer abgelegt werden. Das hat sich bei uns in der Firma so eingebürgert. Bisher werden diese manuell vergeben. Ich hatte gehofft das etwas zu automatisieren.
AW: Wo steht geschrieben, …
19.11.2020 16:46:53
UweD
Hallo
Die Rechnungsnummern sind 9 stellige Zahlen in der Form 200000000
werden aber als 0000-00000 formatiert.
- Rechtsclick auf den Tabellenblattreiter von Rechnungsbuch
- Code anzeigen
- Code reinkopieren

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
Const APPNAME = "Worksheet_Change"
Dim MMax
If Not Intersect(Columns(2), Target) Is Nothing Then ' nur wenn in B
If Target.Row >= 4 And Target.Count = 1 Then ' nur wenn ab Zeile 4 und Einzelzelle
If Target.Offset(0, -1) = "" Then 'nur wenn A noch leer
'Max ermitteln von aktuellem Jahr
MMax = WorksheetFunction.MaxIfs(Columns(1), Columns(1), " 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
& "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Bei Änderung in B wird geprüft, ob A noch leer
LG UweD
Anzeige
AW: Wo steht geschrieben, …
20.11.2020 08:36:33
Stanley
Das ist perfekt.
Vielen vielen Dank.
Prima. Danke für die Rückmeldung. owT
20.11.2020 08:41:20
UweD

76 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige