AW: Fortlaufende Nummer
11.12.2019 10:59:54
Bernd
Servus MaBlu,
die Frage ist, wie die ID generell zusammengestellt werden soll.
Mein Code errechnet die ID anhand des Systemdatums des PC und den bisherigen Eintragungen.
If Not Year(Date) = CInt(Left(Target.Offset(-1, -1), 4)) Then
Er zieht sich das Jahresdatum aus dem aktuellen Datum des Rechners ("Year(Date)") und vergleicht diesen Wert mit den ersten 4 Ziffern der darüberliegenden Eintragung.
Bsp:
Du gibst am 31.12.2019 irgendwelche Daten in Zelle B3 ein. In Zelle A2 steht die ID 20190003. Dann vergleicht der Code das aktuelle Jahr vom Eintragsdatum 31.12.2019 (=2019) mit den ersten 4 Ziffern der Zelle A2 (ID=20190003=>2019). Das Jahr ist gleich, deshalb errechnet das Makro für die Zelle A3 die ID 20190004.
Dann gibst du am 01.01.2020 irgendwelche Daten in Zelle B4 ein. In Zelle A3 steht die ID 20190004. Dann vergleicht der Code das aktuelle Jahr vom Eintragsdatum 01.01.2020 (=2020) mit den ersten 4 Ziffern der Zelle A3 (ID=20190004=>2019). Das Jahr ist NICHT gleich, deshalb errechnet das Makro für die Zelle A4 die ID 20200001.
Daher ist es eine Frage des Prinzips: Soll sich die fortlaufende Nummer aus einem manuell eingetragenen Datum errechnen, oder über das Systemdatum?
Wenn ich später auswerten möchte wann ein Datensatz angelegt wurde würde ich persönlich die automatische der manuellen Datumseintragung vorziehen.
das liesse sich z.B. dadurch ergänzen, indem man zusätzlich von
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ID As Integer
If Target.Column 2 Or Target.Count > 1 Then Exit Sub
If Not Year(Date) = CInt(Left(Target.Offset(-1, -1), 4)) Then
ID = 1
Else
ID = Right(Target.Offset(-1, -1).Value, 4) + 1
End If
If Target.Row > 2 Then
Target.Offset(, -1).Value = Year(Date) & Format(ID, "0000")
Target.Offset(,1).Value = Date ' Eintragsdatum in Spalte "C"
End If
End Sub