提醒用户重复input到用户窗体上的文本框

我有一个用于input产品名称的文本框的用户窗体,当input重复的名称时,我想提醒用户。 在这列中input的值将被存储在列A中,并且列A将具有如Kat-1,kat-2,Amp-0,Pji-4等的值。我尝试了下面的代码,但它给了我一个重复的条目当input“k”时出现消息。 本质上,我希望它完全检查“Kat-1”,然后显示重复的input消息。

Private Sub txt_BPName_Change() Dim cel As Variant Dim myrange As Range Set myrange = Worksheets("Sheet1").Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).row) 'myrange.Interior.ColorIndex = xlNone For Each cel In myrange If Application.WorksheetFunction.CountIf(myrange, cel) > 1 Then MsgBox ("Duplicate Entry") Exit For End If Next Dim i As Long Dim Count As Long Do For i = 1 To Len(txt_BPName.Text) Select Case Asc(Mid(txt_BPName.Text, i, 1)) Case 45, 48 To 57, 65 To 90, 97 To 122 'Cells(Row, 1).Select ActiveCell.Formula = txt_BPName.Text Count = 0 Case Else MsgBox ("Invalid Entry") Exit For txt_BPName.SetFocus Count = 1 End Select Next Loop While Count <> 0 End Sub 

你正在检查错误的事件,你需要做什么。

txt_BPName_Change()将在用户每次更改文本框内容的任何部分时运行。

您可能可以在代码中使用这些条件,但更好的方法是:

txt_BPName_AfterUpdate()

AfterUpdate事件在焦点离开文本框后触发,所以基本上在用户input数据之后。