Werte abgleichen und ggf Fehlermeldung ausgeben, VBA?
Hallo zusammen,
ich möchte in meinem Excel Sheet einrichten, dass wenn der Nutzer einen Wert in Zelle A2 eingibt, welcher keinem der Werte in Spalte V entspricht eine Fehlermeldung ausgegeben wird. Bisher habe ich den Code unten.
Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$2" And Cells(2, 1).Value <> Range("V:V").Select Then
MsgBox "Sie haben gerade Zelle A2 verändert!"
End If
End Sub
Das Problem ist, dass mein Code durchläuft als würde es die zweite If-Bedingung (unten) nicht geben
And Cells(2, 1).Value <> Range("V:V").Select
Kann mir jemand helfen das Problem zu fixen / eine Alternative vorschlagen?
3 Antworten
Dazu brauchst du gar kein Makro, verwende besser die Datenüberprüfung.
Du kannst selbst die Eingabemeldung und die Fehlermeldung texten und dem Benutzer die Möglichkeit geben, aus einem Dropdown aller erlaubten Varianten auszuwählen:

Danke für die Antwort. Eine Datenüberprüfung habe ich allerdings schon eingerichtet. Diese fängt es mir aber nicht ab wenn der User Daten in die Zelle hineinkopiert. Deshalb muss ich den Teil irgendwie anderst abfangen...
Moin!
Um sicherzustellen, dass der Wert in Zelle A2 nicht in der Spalte V vorkommt, könntest du die MATCH-Funktion verwenden. Die MATCH-Funktion sucht nach einem bestimmten Wert in einem Bereich und gibt die Position des Werts innerhalb des Bereichs zurück. Wenn der Wert nicht gefunden wurde, gibt die MATCH-Funktion den Fehlerwert #NV zurück.
Hier ist ein Beispiel für den geänderten Code:
In diesem Beispiel wird der Wert in Zelle A2 in der Spalte V gesucht, wenn der Wert in Zelle A2 geändert wird. Wenn der Wert nicht gefunden wurde, wird eine Fehlermeldung angezeigt. Wenn der Wert gefunden wurde, wird eine andere Nachricht angezeigt.
Ich hoffe, das hilft!
Grüße

Hallo, Danke für deine Antwort.
Leider stürzt meine Datei ab, sobald ich Dim ... As Range eingebe
Ich rate zu CountIf.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" And WorksheetFunction.CountIf(Range("V:V"), Target.Value) > 0 Then
MsgBox "Sie haben gerade Zelle A2 verändert!"
End If