Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: doppelte Eingabe per VBA prüfen

doppelte Eingabe per VBA prüfen
neonac

Hallo Leute,
ich möchte ( Sepp :-)) sein Script um den oberen in einem Worksheet erweitern und der erste soll bitte Spalte D & E auf doppelte Eingabe prüfen.
Danke für eure Hilfe wie immer Neo
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim name As String
If Intersect(Range("D:D"), Target) Is Nothing Then Exit Sub
name = Target
If WorksheetFunction.CountIf(Range("D:D"), name) > 1 Then
MsgBox name & " schon vergeben !!", vbCritical
End If
End Sub

Dim rng As Range, rngRow As Range, lngN As Long, lngC As Long
If Not Intersect(Target, Range("I2:AF104")) Is Nothing Then
Range("I2:AF104").Interior.ColorIndex = xlNone
For Each rngRow In Range("I2:AF104").Rows
lngC = 44
For Each rng In rngRow.Cells
If rng "" Then
lngC = IIf(lngC = 22, 44, 22)
lngN = replaceLetters(rng.Text)
rng.Resize(1, Application.Max(1, Application.Min(lngN, 33 - rng.Column))).Interior.ColorIndex = lngC
End If
Next
Next
End If
End Sub
Private Function replaceLetters(Text As String) As Long
Dim objRegEx As Object
Set objRegEx = CreateObject("VBScript.RegExp")
On Error Resume Next
With objRegEx
.MultiLine = True
.Global = True
.IgnoreCase = True
.Pattern = "\D+"
replaceLetters = CLng(.Replace(Text, ""))
End With
Set objRegEx = Nothing
End Function

Anzeige

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

Betreff
Benutzer
Anzeige
AW: doppelte Eingabe per VBA prüfen
15.11.2010 17:25:19
fcs
Hallo Neo,
was meinst du mit
soll bitte Spalte D & E auf doppelte Eingabe prüfen.
A: Getrennte Auswertung auf doppelte in Spalten D und E?
B: Die Kombination der Werte in Spalten D und E soll auf doppelte geprüft werden?
Gruß
Franz
AW: doppelte Eingabe per VBA prüfen
17.11.2010 23:45:27
Neo
Hallo Franz,
das obere VBA Script sagt wenn ich in Spalte D einen Wert doppelt eingebe "schon vorhanden" und das soll auch in Spalte E passieren. Dieses Script soll dann noch an das andere anepasst werden so das beide in einem Worksheet arbeiten wenn das geht ?
Danke & Grüße Neo
Anzeige
AW: doppelte Eingabe per VBA prüfen
18.11.2010 00:30:29
fcs
Hallo Neo,
mit folgenden Anpassungen sollte es funktionieren.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim rng As Range, rngRow As Range, lngN As Long, lngC As Long
Dim name As String
If Not Intersect(Range("D:D"), Target) Is Nothing Then
For Each rng In Target
Call CheckDoppelte(rng, 4)
Next
ElseIf Not Intersect(Range("E:E"), Target) Is Nothing Then
For Each rng In Target
Call CheckDoppelte(rng, 5)
Next
ElseIf Not Intersect(Target, Range("I2:AF104")) Is Nothing Then
Range("I2:AF104").Interior.ColorIndex = xlNone
For Each rngRow In Range("I2:AF104").Rows
lngC = 44
For Each rng In rngRow.Cells
If rng  "" Then
lngC = IIf(lngC = 22, 44, 22)
lngN = replaceLetters(rng.Text)
rng.Resize(1, Application.Max(1, _
Application.Min(lngN, 33 - rng.Column))).Interior.ColorIndex = lngC
End If
Next
Next
End If
End Sub
Private Function CheckDoppelte(rngZelle As Range, lSpalte As Long)
If rngZelle.Value  "" And rngZelle.Column = lSpalte Then
If WorksheetFunction.CountIf(Columns(lSpalte), rngZelle.Value) > 1 Then
MsgBox rngZelle.Value & " schon vergeben !!", vbCritical
Application.EnableEvents = False
rngZelle.Clear
Application.EnableEvents = True
rngZelle.Select
End If
End If
End Function
Private Function replaceLetters(Text As String) As Long
Dim objRegEx As Object
Set objRegEx = CreateObject("VBScript.RegExp")
On Error Resume Next
With objRegEx
.MultiLine = True
.Global = True
.IgnoreCase = True
.Pattern = "\D+"
replaceLetters = CLng(.Replace(Text, ""))
End With
Set objRegEx = Nothing
End Function

Anzeige
AW: doppelte Eingabe per VBA prüfen
18.11.2010 23:12:34
Neo
Hallo Franz,
geht perfekt, Danke wie immer für die Hilfe.
Grüße Neo
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Doppelte Eingabe per VBA prüfen in Excel


Schritt-für-Schritt-Anleitung

Um doppelte Eingaben in Excel über VBA zu prüfen, kannst du das folgende Verfahren verwenden. Diese Anleitung funktioniert in Excel-Versionen, die VBA unterstützen, wie Excel 2010 und höher.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle dein Arbeitsblatt im Projektfenster aus.

  3. Füge den folgenden Code in das Codefenster ein:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
       Dim rng As Range
       If Not Intersect(Range("D:D"), Target) Is Nothing Then
           For Each rng In Target
               Call CheckDoppelte(rng, 4)
           Next
       ElseIf Not Intersect(Range("E:E"), Target) Is Nothing Then
           For Each rng In Target
               Call CheckDoppelte(rng, 5)
           Next
       End If
    End Sub
    
    Private Function CheckDoppelte(rngZelle As Range, lSpalte As Long)
       If rngZelle.Value <> "" And rngZelle.Column = lSpalte Then
           If WorksheetFunction.CountIf(Columns(lSpalte), rngZelle.Value) > 1 Then
               MsgBox rngZelle.Value & " schon vergeben !!", vbCritical
               Application.EnableEvents = False
               rngZelle.Clear
               Application.EnableEvents = True
               rngZelle.Select
           End If
       End If
    End Function
  4. Schließe den VBA-Editor und teste das Skript, indem du Werte in Spalte D und E eingibst.


Häufige Fehler und Lösungen

  • Fehler: "Komponente nicht gefunden"
    Lösung: Überprüfe, ob du im richtigen Arbeitsblatt bist und der VBA-Code richtig eingefügt wurde.

  • Fehler: Eingabe wird nicht erkannt
    Lösung: Stelle sicher, dass die EnableEvents-Eigenschaft nicht deaktiviert ist. Dies passiert häufig, wenn der Code abgebrochen wird.


Alternative Methoden

Falls du keine VBA-Lösungen verwenden möchtest, kannst du auch die Bedingte Formatierung in Excel nutzen, um doppelte Einträge zu markieren:

  1. Markiere den Bereich in Spalte D und E.
  2. Gehe zu Start > Bedingte Formatierung > Regel zur Hervorhebung von Zellen.
  3. Wähle Doppelte Werte und bestätige.

Diese Methode ist einfacher, aber weniger flexibel als ein VBA-Skript.


Praktische Beispiele

Stell dir vor, du hast eine Liste von Namen in Spalte D und E. Wenn du "Max Mustermann" in D1 und dann in D2 erneut eingibst, sollte eine Fehlermeldung erscheinen, die dir sagt, dass der Name bereits vergeben ist.

Hier gibt es auch die Möglichkeit, mehrere Spalten auf doppelte Eingaben zu prüfen. Du kannst das Skript erweitern, um zusätzliche Spalten hinzuzufügen.


Tipps für Profis

  • Code anpassen: Du kannst das Skript anpassen, um mehr Spalten zu überprüfen oder die Art der Fehlermeldung zu ändern.
  • Debugging: Nutze die Debug.Print-Anweisung, um Fehlerquellen zu identifizieren, falls das Skript nicht wie gewünscht funktioniert.
  • Öffne den VBA-Editor regelmäßig: Um sicherzustellen, dass deine Änderungen korrekt sind, überprüfe den Code nach jeder Anpassung.

FAQ: Häufige Fragen

1. Wie kann ich das Skript für andere Spalten anpassen?
Du kannst den Code kopieren und die Spaltennummern in der CheckDoppelte-Funktion ändern.

2. Funktioniert das Skript auch in Excel Online?
Leider unterstützt Excel Online keine VBA-Skripte. Du musst die Desktop-Version verwenden.

3. Was tun, wenn VBA deaktiviert ist?
Aktiviere die Makros in den Excel-Optionen unter dem Menüpunkt Sicherheitscenter.

4. Kann ich mehrere Werte gleichzeitig eingeben?
Das Skript prüft nur den aktuellen Wert, wenn du eine Zelle änderst. Mehrfacheingaben in einer Zelle sind nicht möglich.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige