Doppelte Einträge über mehrere Tabellenblätter verhindern
Schritt-für-Schritt-Anleitung
Um doppelte Einträge über mehrere Tabellenblätter in Excel zu verhindern, kannst Du die folgenden Schritte ausführen:
- Öffne Excel und erstelle eine Arbeitsmappe mit mehreren Tabellenblättern.
- Öffne den VBA-Editor: Drücke
ALT + F11
, um den Visual Basic for Applications (VBA) Editor zu öffnen.
- Füge ein neues Modul hinzu:
- Klicke auf
Einfügen
und wähle Modul
.
- Füge den folgenden Code ein:
Sub Doppelte_suchen(z As Integer, s As Integer)
Dim ws As Worksheet, wsNameA As String
Dim Lz As Integer, i As Integer
Dim Eingabe As String, Aktiv As Object
Dim Weiter
Set Aktiv = ThisWorkbook.ActiveSheet
wsNameA = ThisWorkbook.ActiveSheet.Name
Eingabe = ThisWorkbook.ActiveSheet.Cells(z, s)
For Each ws In ActiveWorkbook.Worksheets
Lz = ws.Cells(Rows.Count, s).End(xlUp).Row
For i = 1 To Lz
If Eingabe <> "" Then
If ws.Cells(i, s) = Eingabe Then
If ws.Name <> wsNameA Then
Weiter = MsgBox("Achtung, Eintrag bereits in " & ws.Name & _
" vorhanden. Wollen Sie dies zulassen?", vbYesNo)
If Weiter = vbNo Then
Aktiv.Cells(z, s) = ""
Aktiv.Cells(z, s).Select
Exit Sub
End If
End If
End If
End If
Next i
Next ws
Lz = Aktiv.Cells(Rows.Count, s).End(xlUp).Row
For i = 1 To Lz - 1
If Aktiv.Cells(i, s) = Eingabe Then
Weiter = MsgBox("Achtung, Eintrag bereits in aktiver Tabelle vorhanden. Wollen Sie dies zulassen?", _
vbYesNo)
If Weiter = vbNo Then
Aktiv.Cells(z, s) = ""
Aktiv.Cells(z, s).Select
Exit Sub
End If
End If
Next i
End Sub
- Verwende den Code in jedem Arbeitsblatt: Du kannst den Code in jedem Arbeitsblatt verwenden, indem Du den folgenden Code in das Codemodul der jeweiligen Tabelle einfügst:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As Integer, z As Integer
s = Target.Column
z = Target.Row
If s <> 1 Then Exit Sub
Call Doppelte_suchen(z, s)
End Sub
- Speichere Deine Arbeit und schließe den VBA-Editor. Jedes Mal, wenn Du einen neuen Eintrag in Spalte A machst, wird überprüft, ob der Eintrag bereits vorhanden ist.
Häufige Fehler und Lösungen
-
Kein Popup erscheint: Stelle sicher, dass Du den Code in der richtigen Tabelle eingefügt hast. Die Worksheet_Change
-Prozedur muss im Codemodul der spezifischen Tabelle vorhanden sein.
-
Fehlermeldungen im VBA: Überprüfe, ob alle Variablen korrekt deklariert sind. Verwende Option Explicit
, um sicherzustellen, dass alle Variablen deklariert sind.
-
Doppelte Einträge werden nicht erkannt: Vergewissere Dich, dass Du die korrekten Spaltennummern im Code verwendest.
Alternative Methoden
Falls Du ohne VBA arbeiten möchtest, kannst Du die Funktion Daten-Gültigkeit verwenden, um doppelte Werte in einem einzelnen Arbeitsblatt zu überprüfen. Hierzu gehst Du folgendermaßen vor:
- Wähle die Zellen aus, in denen Du die Eingaben machen möchtest.
- Gehe zu
Daten
> Datenüberprüfung
.
- Wähle
Benutzerdefiniert
und verwende die Formel:
=ZÄHLENWENN(A:A;A1)=1
- Bestätige mit
OK
. Dadurch wird sichergestellt, dass in der gewählten Spalte keine doppelten Werte vorkommen.
Praktische Beispiele
-
Doppelte Werte aus 2 Tabellenblättern farblich markieren: Du kannst die bedingte Formatierung verwenden, um doppelte Werte visuell hervorzuheben. Wähle die Zellen aus, gehe zu Start
> Bedingte Formatierung
> Neue Regel
und verwende die Formel:
=ZÄHLENWENN(Tabelle1!A:A;A1)>0
Wähle eine Formatierung und klicke auf OK
.
-
Über mehrere Tabellenblätter: Um die doppelten Werte über mehrere Tabellenblätter zu markieren, kannst Du die gleichen Schritte für jedes Blatt wiederholen oder VBA verwenden, um dies automatisch zu erledigen.
Tipps für Profis
-
Verwende Named Ranges: Um die Handhabung von Daten zu vereinfachen, kannst Du Namen für Bereiche definieren und diese in Deinen Formeln verwenden.
-
Debugging im VBA: Wenn Du auf Probleme stößt, verwende die Debugging-Tools im VBA-Editor, um den Code Zeile für Zeile zu durchlaufen.
-
Erstelle ein Benutzerformular: Für eine benutzerfreundliche Eingabe kannst Du ein Formular erstellen, das die Eingabe und die Überprüfung von doppelten Einträgen erleichtert.
FAQ: Häufige Fragen
1. Wie kann ich den Code für eine andere Spalte anpassen?
Um den Code auf eine andere Spalte anzuwenden, ändere die Zahl in der Zeile If s <> 1 Then Exit Sub
und die entsprechende Zeile in der Doppelte_suchen
-Subroutine.
2. Kann ich die Eingabeaufforderung für doppelte Einträge anpassen?
Ja, Du kannst den Text in der MsgBox
-Funktion ändern, um die MessageBox an Deine Bedürfnisse anzupassen.