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

Forumthread: ID automatisch generieren

ID automatisch generieren
29.07.2015 11:30:41
P-Quest
Hallo,
ich möchte gerne inenrhalb eines VBA Codes eine Sub einbringen, die für einen Artikel eine eindeutige ID automatisch generiert. Die ID soll nach einem simplen Schema aufgebaut sein. Ein Buchstabe (entspricht dem Anfangsbuchstaben der Artikelgruppe) gefolgt von einer laufenden Nummer.
ID Artikelgruppe Artikel
K1 Käse Emmentaler
B1 Brot Toastbrot
O1 Obst Äpfel
O2 Obst Birnen
K2 Käse Holländer
Die laufende Nummer stellt mich gerade vor ein Problem. Wie kann ich per VBA am geschicktesten die nächste Zahl ermitteln?
Ich habe noch keinen Code für die ID erstellt, weil ich nicht genau weiss, wie ich an die Sache rangehen soll.
Hat jemand von euch so etwas schon mal gemacht oder hat jemand eine Idee?
Gruß,
Peter

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: ID automatisch generieren
29.07.2015 12:08:22
Sepp
Hallo Peter,
' **********************************************************************
' Modul: Tabelle2 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range

On Error GoTo ErrExit

If Not Intersect(Target, Columns(2)) Is Nothing Then
  Application.EnableEvents = False
  For Each rng In Intersect(Target, Intersect(Columns(2), Me.UsedRange))
    If rng.Row > 1 And rng <> "" And Cells(rng.Row, 1) = "" Then
      Cells(rng.Row, 1) = UCase(Left(rng, 1)) & Format(Application.CountIf(Range("B1:B" & rng.Row), rng), "0000")
    Else
      Cells(rng.Row, 1) = ""
    End If
  Next
End If
ErrExit:
Application.EnableEvents = True
End Sub


bei einer Eingabe in Spalte B wird die ID in Spalte A eingetragen.
Gruß Sepp

Anzeige
AW: ID automatisch generieren
29.07.2015 12:26:27
P-Quest
Hallo Sepp,
besten Dank für den Ansatz. Damit komme ich sicher weiter. Es sind noch ein paar Dinge zu ändern. Die ID muss natürlich fest vergeben werden u.Ä.
Ich setzt mich mal ran und werde versuchen den Code auf meine Anforderungen anzupassen.
Gruß,
Peter

AW: ID automatisch generieren
29.07.2015 12:20:26
ede
Hallo Peter,
die Lösung von Seep funktioniert, solange du keine Artikelgruppen hast, die mit dem gleichen Buchstaben anfangen! Mann sollte auch der Artikel-Gruppe eine eindeutige ID geben und diese statt dem Anfangsbuchstaben voranstellen.
Gruss
Ede

Anzeige
AW: ID automatisch generieren
29.07.2015 17:38:04
P-Quest
Hallo Ede,
die von dir genannte Einschränkung ist nicht die Einzige. Werden in eine bestehende Liste Zeilen eingefügt und mit Inhalt gefüllt oder bei einem Artikel wird die Artikelnummer geändert oder die Artikelliste wird neu sortiert, gibt es div. Fehler in der Artikelnummer. Es bleibt schon mal ein ID-Feld leer oder eine Nummer taucht doppelt auf.
Wie ich schon in meiner ersten Antwort schrieb, ist der Ansatz toll. Jetzt muss noch ergänzt werden.
Gruß,
Peter
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

ID automatisch generieren in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um in Excel eine eindeutige ID automatisch zu generieren, kannst du folgenden VBA-Code verwenden. Dieser Code erstellt eine ID basierend auf dem Anfangsbuchstaben der Artikelgruppe gefolgt von einer laufenden Nummer. Du musst diesen Code in das entsprechende VBA-Modul deiner Excel-Datei einfügen:

  1. Drücke Alt + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei)", dann "Einfügen" > "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim rng As Range
       On Error GoTo ErrExit
    
       If Not Intersect(Target, Columns(2)) Is Nothing Then
           Application.EnableEvents = False
           For Each rng In Intersect(Target, Intersect(Columns(2), Me.UsedRange))
               If rng.Row > 1 And rng <> "" And Cells(rng.Row, 1) = "" Then
                   Cells(rng.Row, 1) = UCase(Left(rng, 1)) & Format(Application.CountIf(Range("B1:B" & rng.Row), rng), "0000")
               Else
                   Cells(rng.Row, 1) = ""
               End If
           Next
       End If
    ErrExit:
       Application.EnableEvents = True
    End Sub
  4. Schließe den Editor und gehe zurück zu Excel.

  5. Füge Daten in die Spalte B ein, um die ID in Spalte A automatisch generieren zu lassen.


Häufige Fehler und Lösungen

  • Fehler: ID wird nicht generiert

    • Lösung: Stelle sicher, dass du den Code in das richtige Blatt-Modul (z.B. "Tabelle1") eingefügt hast und dass der Code korrekt aktiviert ist.
  • Fehler: Doppelte ID

    • Lösung: Achte darauf, dass keine Artikelgruppen mit dem gleichen Anfangsbuchstaben existieren oder implementiere eine Logik zur Überprüfung der Eindeutigkeit.
  • Fehler: ID bleibt leer

    • Lösung: Überprüfe, ob die Zelle in Spalte B korrekt ausgefüllt ist, bevor die ID generiert wird.

Alternative Methoden

Wenn du keine VBA-Lösung verwenden möchtest, kannst du auch Formeln nutzen, um IDs zu generieren:

  1. Verwende die Formel:

    =WENN(B2<>"";LINKS(B2;1)&TEXT(ZÄHLENWENN(B$2:B2;B2);"0000");"")

    Diese Formel generiert eine ID basierend auf dem Wert in Zelle B2.

  2. Excel-Add-Ins: Es gibt auch spezielle Add-Ins, die die automatische ID-Generierung unterstützen, falls du regelmäßig IDs erstellen musst.


Praktische Beispiele

Hier sind einige Beispiele, wie die automatisch generierten IDs in Excel aussehen könnten:

ID Artikelgruppe Artikel
K1 Käse Emmentaler
B1 Brot Toastbrot
O1 Obst Äpfel
O2 Obst Birnen
K2 Käse Holländer

Diese Tabelle zeigt, wie die IDs automatisch generiert werden, wenn du Artikel in die Spalte B eingibst.


Tipps für Profis

  • Gruppen automatisch generieren: Überlege, wie du IDs für verschiedene Artikelgruppen generieren kannst, indem du eine zusätzliche Logik im VBA-Code einfügst.
  • ID Formatierung: Du kannst das Format der ID anpassen, um sicherzustellen, dass es deinen Anforderungen entspricht (z.B. durch Hinzufügen von Präfixen).
  • Fehlerüberprüfung: Implementiere eine Fehlerbehandlung, um Probleme beim Erstellen von IDs zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die IDs eindeutig sind?
Durch die Verwendung von Application.CountIf im VBA-Code kannst du sicherstellen, dass die IDs basierend auf der Artikelgruppe und der laufenden Nummer eindeutig sind.

2. Kann ich die ID-Generierung für mehrere Tabellenblätter verwenden?
Ja, du kannst den gleichen VBA-Code für verschiedene Tabellenblätter verwenden, indem du den Code in die entsprechenden Module einfügst. Stelle sicher, dass du die Bereiche anpasst, wenn nötig.

3. Funktioniert das in allen Excel-Versionen?
Ja, dieser VBA-Code sollte in allen modernen Excel-Versionen funktionieren, die VBA unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige