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

ID einmalig vergeben

ID einmalig vergeben
08.03.2017 20:18:08
Thomas
Hallo Excelfreunde,
ich möchte gern eine einmalige ID in spalte a vergeben.
Dazu habe ich mir das untenstehende macro zusammen gebaut. Dies funktioniert soweit auch ganz gut
Nun ja, es ist noch das Wort ganz gut.
Das Problem ist ich darf jede Nummer nur einmal vergeben. Diese Regel bleibet auch wenn zwischendurch eine zeile gelöscht wird.
z.B. Zeile 5 wird gelöscht hier stand die ID Nr, 5 darf Sie nie wieder vergeben werden.
Bis hier klappt das Marco ganz gut.
Der Fehler tritt auf wenn die letzte Zeile gelöscht wird.
z.B. die letzte Zeile hatte die id Nr. 10 und ich lösche Sie dann bekommt mit meinem Macro der neue Datensatz wieder die 10.
Ich meine das ich schon mal etwas davon gehört oder gelesen habe das es im Tabellenblatt ein Bereich gibt in dem man so eine Nummer ablegen könnte.
CustomProperties Kann ich dies dafür irgendwie nutzen?
Weiss jemand rat bei meinem Problem?
mfg thomas
Private Sub Worksheet_Change(ByVal Target As Range)
Dim GetNewID
GetNewID = WorksheetFunction.Max(Tabelle5.Columns(1)) + 1
'nur etwas tun wenn nur 1 Zelle betroffen ist
If Target.Count > 1 Then Exit Sub
'Prüfung, ob sich etwas in Spalte C geändert hat
'und ob der Wert in Spalte C  "" ist
'und ob nicht schon eine ID vergeben wurde
'-> wenn alles zutrifft, dann neue ID eintragen
If Target.Column = 3 And _
Target.Value  "" And _
Cells(Target.Row, "A").Value = "" Then
Cells(Target.Row, "A").Value = GetNewID
End If
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ID einmalig vergeben
08.03.2017 22:39:27
Werner
Hallo Thomas,
diesen Code ins CodeModul von "DieseArbeitsmappe"
Private Sub Workbook_Open()
oldId = WorksheetFunction.Max(Tabelle5.Columns(1))
End Sub
diesen Code ins CodeModul von Tabelle5
Private Sub Worksheet_Activate()
oldId = WorksheetFunction.Max(Tabelle5.Columns(1))
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim GetNewID As Long
GetNewID = WorksheetFunction.Max(Tabelle5.Columns(1)) + 1
'nur etwas tun wenn nur 1 Zelle betroffen ist
If Target.Count > 1 Then Exit Sub
'Prüfung, ob sich etwas in Spalte C geändert hat
'und ob der Wert in Spalte C  "" ist
'und ob nicht schon eine ID vergeben wurde
'-> wenn alles zutrifft, dann neue ID eintragen
If Target.Column = 3 And Target.Value  "" And Cells(Target.Row, "A").Value = "" Then
If Target.Row = 1 Then oldId = 0
If oldId > WorksheetFunction.Max(Tabelle5.Columns(1)) Then
Cells(Target.Row, "A").Value = oldId + 1
Else
Cells(Target.Row, "A").Value = GetNewID
End If
oldId = WorksheetFunction.Max(Tabelle5.Columns(1))
End If
End Sub
das in eine allgemeines Modul (keine Prozedur im Modul anlegen, nur ein Modul anlegen und die Codzeile ins Modul reinkopieren)
Public oldId As Long
Gruß Werner
Anzeige
besten dank an Werner das klappt
09.03.2017 05:34:31
Sipel
Hallo Werner,
hab recht vielen dank für diese Variante.
Es klappt super.
mfg thomas
AW: besten dank an Werner das klappt
09.03.2017 05:35:43
Thomas
Hallo Werner,
hab recht vielen dank für diese Variante.
Es klappt super.
mfg thomas
Gerne u.Danke für die Rückmeldung. o.w.T.
09.03.2017 13:05:40
Werner
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge