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

doppelte Einträge mit VBA verhindern

Forumthread: doppelte Einträge mit VBA verhindern

doppelte Einträge mit VBA verhindern
02.11.2006 10:29:54
Andre´
Hallo alle zusammen,
ich möchte über VBA erreichen, dass in dem Bereich von B60 bis B100 keine doppelten Einträge gemacht werden können. Wenn ein doppelter Eintrag gemacht wird, dann soll eine Meldung auftauchen wie "Wert ist schon vorhanden". Über die Gültigkeit geht es nicht, weil dort schon eine Auswahl hinterlegt ist.
Ich hoffe mir kann jemand helfen
Danke im voraus!
Andre
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: doppelte Einträge mit VBA verhindern
02.11.2006 10:45:30
Daniel
Hallo
das geht mit einem Event-gesteuerten Makro.
Du trägst im Codebereich des betroffenen Tabellenblatts folgenden Code ein:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("B60:B100")
If Target.Value = "" Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Bereich, Target) Is Nothing Then Exit Sub
If WorksheetFunction.CountIf(Bereich, Target.Value) > 1 Then
MsgBox ("Doppelter Eintrag nicht zulässig")
Application.EnableEvents = False
Target.Value = ""
Application.EnableEvents = True
Target.Select
End If
End Sub

Gruß, Daniel
Anzeige
AW: doppelte Einträge mit VBA verhindern
02.11.2006 10:54:43
Andre´
Hallo Daniel,
danke für die schnelle Antwort. Funktioniert ganz gut, aber wenn ich z.B. zwei oder mehr Zellinhalte entfernen möchte, dann erscheint Laufzeitfehler 13: Typen unverträglich.
Hast du dafür auch eine Lösung!
MFG
Andre
AW: doppelte Einträge mit VBA verhindern
02.11.2006 10:57:53
Daniel
Ups, sorry
vertausch mal die Zeilen
If Target.Value = "" Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub

in der Reihenfolge.
Dann sollte es gehen.
Gruß, Daniel
Anzeige
Vielen DANK!! Funzt prima
02.11.2006 11:17:35
Andre´
Vertausche Zeile 4 und 5 o.w.T.
02.11.2006 10:58:03
EtoPHG
;
Anzeige
Anzeige

Infobox / Tutorial

Doppelte Einträge in Excel mit VBA verhindern


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA sicherzustellen, dass im Bereich von B60 bis B100 keine doppelten Einträge gemacht werden können, folge diesen Schritten:

  1. Öffne das Excel-Dokument, in dem du die doppelten Einträge verhindern möchtest.
  2. Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  3. Wähle im Projektfenster das entsprechende Arbeitsblatt aus (z.B. "Tabelle1").
  4. Kopiere den folgenden Code in das Codefenster:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Bereich As Range
    Set Bereich = Range("B60:B100")
    If Target.Value = "" Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Bereich, Target) Is Nothing Then Exit Sub
    If WorksheetFunction.CountIf(Bereich, Target.Value) > 1 Then
        MsgBox ("Doppelter Eintrag nicht zulässig")
        Application.EnableEvents = False
        Target.Value = ""
        Application.EnableEvents = True
        Target.Select
    End If
End Sub
  1. Schließe den VBA-Editor und kehre zurück zu deinem Excel-Dokument.
  2. Teste die Funktion, indem du versuchst, einen doppelten Wert in den Bereich B60 bis B100 einzugeben.

Häufige Fehler und Lösungen

  • Laufzeitfehler 13: Typen unverträglich
    Wenn du mehrere Zellinhalte gleichzeitig löschen willst und der Fehler erscheint, tausche die folgenden Zeilen im Code um:

    If Target.Value = "" Then Exit Sub
    If Target.Cells.Count > 1 Then Exit Sub
  • Meldung erscheint trotz einzigartiger Werte
    Stelle sicher, dass der Bereich richtig definiert ist und keine unsichtbaren Zeichen oder Leerzeichen in den Zellen vorhanden sind.


Alternative Methoden

Falls du die Verwendung von VBA vermeiden möchtest, kannst du auch die Datenvalidierungsfunktion von Excel nutzen, um doppelte Einträge zu verhindern. Hierzu kannst du eine benutzerdefinierte Formel verwenden:

  1. Markiere den Bereich B60 bis B100.
  2. Gehe zu Daten > Datenüberprüfung.
  3. Wähle Benutzerdefiniert aus und gebe die folgende Formel ein:
=ZÄHLENWENN(B$60:B$100; B60)=1
  1. Klicke auf OK. Diese Methode ist jedoch nicht so robust wie die VBA-Lösung.

Praktische Beispiele

  • Beispiel 1: Wenn du versuchst, "Test" in B60 einzugeben und dann erneut in B61, wird die Meldung "Doppelter Eintrag nicht zulässig" erscheinen.
  • Beispiel 2: Wenn du "Beispiel" in B60 eingibst und dann B61 leer lässt, sollte keine Meldung erscheinen, da der Eintrag nicht doppelt ist.

Tipps für Profis

  • Überlege, ob du die Meldung anpassen möchtest, um spezifischere Hinweise zu geben (z.B. "Der Wert 'X' existiert bereits in B60").
  • Teste den VBA-Code gründlich, insbesondere bei mehreren Änderungen gleichzeitig, um sicherzustellen, dass alles wie gewünscht funktioniert.
  • Du kannst den Code auch so erweitern, dass er die Zeile anzeigt, in der der doppelte Wert gefunden wurde.

FAQ: Häufige Fragen

1. Wie kann ich den VBA-Code anpassen, um andere Bereiche zu überprüfen?
Ändere einfach die Zeile Set Bereich = Range("B60:B100") in den gewünschten Bereich, zum Beispiel Set Bereich = Range("A1:A50").

2. Funktioniert dieser Code in jeder Excel-Version?
Ja, dieser VBA-Code funktioniert in den meisten Versionen von Excel, die VBA unterstützen, einschließlich Excel 2010 bis 2021 und Excel für Microsoft 365.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige