Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Automatische ID ohne doppelte Werte

Forumthread: Automatische ID ohne doppelte Werte

Automatische ID ohne doppelte Werte
28.11.2024 11:38:29
Alexwin
Hallo zusammen,

ich lasse mir beim Anlegen einer neuen Person in eine Tabelle automatisch eine eindeutige ID zu jedem Mitarbeiter erstellen. ( Der Wert wird dann in die Zelle D12 geschrieben )

.Range("D12").Value = tbl.DataBodyRange(tbl.DataBodyRange.Rows.Count, 1).Value + 1

Das ganze Funktioniert so aber nur wenn die Tabelle aufsteigend nach der ID sortiert wurde. Lässt man zuvor die Tabelle z.b. nach dem Nachnamen sortieren ändert sich natürlich aud die Reihenfolge der ID´s.
Wird nun ein neuer Mitarbeiter erstellt so erhält er nicht mehr die nächst höhere Zahl, sondern eine Zahl die um 1 höher ist als die letzte Zahl in der Tabelle.

Nun möchte ich aber das immer ( egal wie die Tabelle sortiert wurde ) eine ID erzeugt wird die 1 höher ist als die maximalste aus der Spalte ID der Tabelle.

Ich habe schon experimentiert mit so Sachen wie

Application.WorksheetFunction.Max

aber mir will es einfach nicht gelingen.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatische ID ohne doppelte Werte
28.11.2024 12:20:00
Alwin Weisangler
Hallo,

um eine versehentliche Vergabe einer bereits bestehenden einmaligen Nummer sicherzustellen gibt es einen recht bequemen Weg.
Da du mit einem Listobject arbeitest, kannst du den zuletzt vergebenen Wert ins Kommentarfeld schreiben.
Beim Erzeugen eines neuen Datensatzes liest du diese Nummer aus dem Kommentarfeld des Listobjects aus und addierst +1.
Diese Nummer übergibst du in die Zelle der betreffenden Zeile und ins Kommentarfeld als zuletzt verwendete Nummer.
Damit ist die Einmaligkeit sichergestellt.

Gruß Uwe
Anzeige
AW: Automatische ID ohne doppelte Werte
28.11.2024 13:29:52
Alexwin
Hallo,

und danke erst einmal für die Hilfe.

Plausibel klingt das für mich schonmal, leider kann ich damit aber noch nichts anfangen da ich nicht weiß wie ich den letzten Wert in den Kommentar schreiben kann, geschweige denn auslesen und neuschreiben.

Und vorab noch eine weitere Frage dazu..

bedeutet in dem Fall letzter Wert wirklich den letzten Wert der in die Tabelle geschrieben wird, oder bedeutet es den letzten Wert der in die Spalte Mitarbeiter-ID geschrieben wurde ?
Aktuell ist es so das ich auf einen Button "neuer Mitarbeiter" klicke. Dann wird ein neues Fenster geöffnet in dem automatisch in einem schreibgeschützen Bereich die ID generiert wird und ich dann die persönlichen Daten des Mitarbeiters eingebe und auf einen Button speichern klicke. Alle Werte werden dann in die tbl_Datenbank übernommen. Demnach wäre der letzte Wert die Abteilung in der er arbeitet :)

Würdest du mir das genauer erklären können ?

Danke und Grüße
Anzeige
AW: Automatische ID ohne doppelte Werte
28.11.2024 13:54:34
Alwin Weisangler
mal ein Beispiel dazu.
Da keiner weiß, was du mit der eindeutigen Nummer vorhast (ID ist schon nochmal was anderes) ist es so eine recht praktikable Lösungsmöglichkeit. Dies ist natürlich auch manipulierbar. Man kann so was auch noch tiefer verstecken.
Aber wer sich auskennt kann an Hand des Codes erkennen wo er suchen muss. Einigermaßen Sicher ist da nur eine verschlüsselte Datenbank.
https://www.herber.de/bbs/user/173867.xlsm

Gruß Uwe
Anzeige
Hier sind...
28.11.2024 13:07:33
Case
Moin, :-)

... zwei Möglichkeiten (getestet): ;-)
.Range("D12").Value = Application.Evaluate("=MAX(Tabelle1[Nummer])+1")

Oder: ;-)
.Range("D12").Value = Application.WorksheetFunction.Max(Range("Tabelle1[Nummer]")) + 1

Den Tabellennamen und den Spaltennamen musst du noch anpassen. ;-)

Servus
Case


Anzeige
AW: Hier sind...
28.11.2024 13:35:35
snb
Ein ID sollte invariant sein.
Dann ist jeder Abhängichkeit von der Tabelle ausgeschlossen.
AW: Hier sind...
28.11.2024 14:04:38
Alexwin
Ich habe jetzt die Lösung von Case umgesetzt und es funktioniert so einwandfrei. Danke dafür ..

Den anderen Lösungsansatz werde ich trotzdem nochmal für mich nachstellen um es einfach zu verstehen, ebenfalls vielen Dank für den Ansatz

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige