2016-04-12 8 views
0

Ich habe eine Spalte, die Text aus alphanumerischen Zeichen mit einem Sonderzeichen '-' wie Kat enthält -1, Amp-2, Xua-09 usw. Ich habe den folgenden Code ausprobiert, aber er scheint keinen Text wie Kat-1 als Duplikat zu erkennen. Kann jemand bitte überprüfen, was mit diesem Code falsch ist.Vergleichen Sie einen Textboxeintrag mit einer Spalte, die Text enthält (alphanumerisch mit '-'), wenn ein Duplikat gefunden wird, dann alert Benutzer

Private Sub txt_BPName_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
Dim myrange As Range 
Dim match As Boolean 
Dim val 
Set myrange = Worksheets("Sheet1").Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).row) 
match = WorksheetFunction.CountIf(myrange, val) > 0 
If match Then 
MsgBox ("Duplicate") 
Cancel = True 
End If 
End Sub 
+0

Sie definieren nicht "val" – user3598756

Antwort

0

Ich denke, Sie sollten sich die Funktion Instr() ansehen. Sie können durch Ihre Spalte iterieren und jede Zelle in der Spalte mit Ihrem Textfeldwert mit einer for-Schleife vergleichen. Das ist wahrscheinlich die einfachste Lösung. Wenn Sie einen Auszug aus Ihrem Spead Sheet veröffentlichen, wäre es einfacher, Ihre Funktion zu bearbeiten.

+0

'Private Sub txt_BPName_Exit For Each c In Range ("A2: A"(A MSForms.ReturnBoolean Abbrechen ByVal) & Cells (Rows.Count, 1) .End (xlUp) .row) Wenn c.Value = txt_BPName Dann MsgBox "Cell" & c.Address & "ist ein Duplikat." Weiter c Cancel = True End Sub' Dieser Code sucht nach Duplikaten, aber das einzige Problem ist, dass ich meinen unmittelbaren Eintrag in einem Textfeld als Duplikat finde. Irgendeine Idee, wie man das vermeidet. @ user3598756 @Tyler Denton – Abhi0609

+0

Ich verstehe nicht wirklich das Problem, das Sie haben, aber das wird funktionieren. Option Explicit Private Sub CommandButton1_Click() Dim x As Integer Dim I As Integer Dim Spiel As String Dim Zeile As Integer Dim hier As Integer hier = 0 Mit Active x = .Cells (.Rows. Graf, "A"). End (xlUp) .row Match = Me.TextBox1.Text Für i = 1 bis x hier = InStr (.Cells (I, 1), Match) Wenn hier <> 0 Dann MsgBox ("Übereinstimmung in Zeile" + Str (I)) Ende Wenn hier = 0 Nächste I Ende mit Ende Sub –