AW: exel..doppelte einträge verhindern
13.07.2007 11:08:39
Chaos
Servus Ernst,
im Moment wird nur geprüft, wo eingegeben wurde.
Hier:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As Integer, i As Integer
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If Target.Value "" Then
i = Range("B65536").End(xlUp).Offset(0 - 1, 0).Row
For z = 1 To i Step 1
If Cells(z, 2).Value "" Then
If Cells(z, 2).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
End If
End If
If Cells(z, 3).Value "" Then
If Cells(z, 3).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
End If
End If
If Cells(z, 9).Value "" Then
If Cells(z, 9).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
End If
End If
If Cells(z, 10).Value "" Then
If Cells(z, 10).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
End If
End If
If Cells(z, 16).Value "" Then
If Cells(z, 16).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
End If
End If
If Cells(z, 17).Value "" Then
If Cells(z, 17).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
End If
End If
Next z
End If
End If
End Sub
wird in allen Spalten geprüft, die du angegeben hast, wenn irgendwas in den Zellen drin steht, aber nur bis zu der Zeile, wo du in Spalte B bereits Werte stehen hattest.
Dieses Makro gilt aber momentan nur für Eingaben in Spalte B, für die anderen Spalten musst du den Kopf in If Intersect(Target, Range("gewünschte Spalte:gewünschteSpalte") abbändern und das komplette Makro unten anhängen.
Also so:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As Integer, i As Integer
If Not Intersect(Target, Range("B:B")) Is Nothing Then
If Target.Value "" Then
i = Range("B65536").End(xlUp).Offset(0 - 1, 0).Row
For z = 1 To i Step 1
If Cells(z, 2).Value "" Then
If Cells(z, 2).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 3).Value "" Then
If Cells(z, 3).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 9).Value "" Then
If Cells(z, 9).Value = Target.Value Then
MsgBox ("Wert in Spalte B schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 10).Value "" Then
If Cells(z, 10).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 16).Value "" Then
If Cells(z, 16).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 17).Value "" Then
If Cells(z, 17).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
Next z
End If
End If
If Not Intersect(Target, Range("C:C")) Is Nothing Then
If Target.Value "" Then
i = Range("C65536").End(xlUp).Offset(0 - 1, 0).Row
For z = 1 To i Step 1
If Cells(z, 2).Value "" Then
If Cells(z, 2).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 3).Value "" Then
If Cells(z, 3).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 9).Value "" Then
If Cells(z, 9).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 10).Value "" Then
If Cells(z, 10).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 16).Value "" Then
If Cells(z, 16).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
If Cells(z, 17).Value "" Then
If Cells(z, 17).Value = Target.Value Then
MsgBox ("Wert schon vorhanden")
Target.Select
Exit Sub
End If
End If
Next z
End If
End If
End Sub
das ist jetzt für Eingabe in B und C mit Überprüfung aller von dir genannten Spalten B = 2, C=3;I = 9, J=10, P = 16 und Q = 17
Gruß
Chaos