Makroerweiterung
Ernst
würde mal wieder eure Hilfe brauchen.
Ich habe folgendes bestehendes Makro das mich auf doppelte Einträge aufmerksam macht !
Möchte es gerne erweitern.
1] bei Eingabe eines Wertes üperprüfen ob der Wert in Tabelle 2 a1-a100 vorhanden ist, in Tabelle 2 b1-b100 steht ein Text der den jeweiligen Wert zugeordnet ist.
wenn ja sollte eine msg Box Ausgabe erfolgen die mir den Text anzeigt der dem eingegebenen Wert zugeordnet ist.
bei Zellenwechsel msg Box schließen.
wäre Dankbar wenn mir da jemand helfen könnte.
lg.Ernst
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iSpalte As Variant ' die Eingabe- und die zu vergleichenden Spalten
Dim iIndex As Integer ' Index für den Spalten-Array
If Target.Count > 1 Then Exit Sub ' mehr als eine Zelle markiert ?
If Target.Value = "" Then Exit Sub ' ist die Zelle gefüllt ?
' B C I J P Q
iSpalte = Array(2, 3, 9, 10, 16, 17) ' die Spalten-Nummern als Array
If Target.Column = 2 Or Target.Column = 3 Or _
Target.Column = 9 Or Target.Column = 10 Or _
Target.Column = 16 Or Target.Column = 17 Then ' eine gültige Eingabe-Spalte ?
For iIndex = 0 To UBound(iSpalte) ' alle Spalten abarbeiten/vergleichen
If Target.Column = iSpalte(iIndex) Then ' ist es die Eingabespalte ?
If Application.WorksheetFunction.CountIf(Columns(Target.Column), _
Target.Value) > 1 Then ' zählen in der Eingabespalte
If MsgBox("die Eingabe """ & Target.Value & """ gibt es " & _
"in der Spalte """ & Chr(Asc("@") + iSpalte(iIndex)) & """ bereits." _
& Chr(10) & "Wollen Sie den Eintrag trotzdem übernehmen?", _
vbYesNo + vbQuestion, " nur zur Sicherheit.") = vbYes Then
Exit Sub
Else
Target.Value = "" ' die Eingabe löschen
Cells(Target.Row, Target.Column).Select ' Cursor auf die Eingabezelle
Exit For
End If
End If
Else ' es ist NICHT die Eingabspalte !
If Application.WorksheetFunction.CountIf(Columns(iSpalte(iIndex)), _
Target.Value) > 0 Then ' zählen in den NICHT Eingabespalten
If MsgBox("die Eingabe """ & Target.Value & """ gibt es " & _
"in der Spalte """ & Chr(Asc("@") + iSpalte(iIndex)) & """ bereits." _
& Chr(10) & "Wollen Sie den Eintrag trotzdem übernehmen?", _
vbYesNo + vbQuestion, " nur zur Sicherheit.") = vbYes Then
Exit Sub
Else
Target.Value = "" ' die Eingabe löschen
Cells(Target.Row, Target.Column).Select ' Cursor auf die Eingabezelle
Exit For
End If
End If
End If
Next iIndex
End If
End Sub