Registriert seit: 29.09.2015
Version(en): 2030,5
26.11.2023, 15:23
(Dieser Beitrag wurde zuletzt bearbeitet: 26.11.2023, 15:26 von snb.)
Alternatieve:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 2 Then
If Target <> "" And Target.Offset(, -1) = "" Then Target.Offset(, -1) = Format(Date, "YYMM - ") & Format(IIf(Left(Target.Offset(-1, -1), 4) <> Format(Date, "YYMM"), 0, Right(Target.Offset(-1, -1), 3) + 1), "000")
End If
End Sub
Dann braucht man kein 'Administrator' Arbeitsblatt mehr.
Registriert seit: 25.11.2021
Version(en): 2019, 365
26.11.2023, 16:31
(Dieser Beitrag wurde zuletzt bearbeitet: 26.11.2023, 16:37 von Ralf A.)
@snb
Code:
Right(Target.Offset(-1, -1), 3) + 1)
das ist genau das, was nicht passieren darf! Du beziehst Dich auf die Vorgängernummer und berücksichtigst nicht, dass dadurch eine doppelte, oder noch schlimmer, mehrfache Vergabe einer ID für unterschiedliche Datensätze, die vermieden werden soll, ermöglicht wird. So wird die Eineindeutigkeit zerschossen und andere Tabellenblätter, die sich auf diese ID beziehen, liefern Dir u.U. falsche Ergebnisse.
Cinderella, bleib beim Administratorblatt! Unabhängig von der Vorgängerzelle.... ansonsten hätten wir ja auch bei Max oder der Zeilennummer bleiben können...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
26.11.2023, 17:47
(Dieser Beitrag wurde zuletzt bearbeitet: 26.11.2023, 17:47 von RPP63.)
Moin nochmal von mir!
Ich bin ja immer noch der Meinung, dass man den aktuellen Monat und das Jahr im Kopf haben sollte.
Eine selbständige Addition von 1 traue ich den meisten Sachbearbeitern zu …
Wenn ich unbedingt sicherstellen will, dass die Nummer eindeutig ist (und auf VBA zurückgreifen will), dann nehme ich einen Timestamp im entsprechenden Format.
Diesen trage ich per Doppel- oder Rechtsklick in die Zelle ein:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
With Target
If .Column = 1 And .Value = "" Then
.Value = CDbl(Format(Now, "yyyymmhhnnss"))
Cancel = True
End If
End With
End Sub
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 25.11.2021
Version(en): 2019, 365
...Timestamp ist immer gut....
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Registriert seit: 26.09.2022
Version(en): 2019
Moin,
Im allgemeinen sei empfohlen in eindeutigen Ziffern nicht weitere Informationen zu verschlüsseln. Welchen Vorteil hast du davon, dass du einer Mitgliedsnummer ihr alter ansiehst? Wenn du das Eintrittsdatum einfach als zusätzliches Stammdatum erfasst, reicht eine einfache fortlaufende Nummer.
Also: Grundsätzlich hat eine ID keine andere Bedeutung als ihre Eindeutigkeit.
Viele Grüße
derHöpp