我有一个带有文本框的用户表单,用于输入产品名称,我想在输入重复名称时提醒用户。在此列中输入的值将存储在A列中,我的A列将具有Kat-1,kat-2,Amp-0,Pji-4等值。我尝试了下面的代码,但它给了我一个重复的条目当一个' k'进入。基本上,我希望它完全检查“Kat-1'然后显示重复的条目消息。
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
答案 0 :(得分:0)
您正在检查错误的事件以了解您需要做什么。
每次用户更改文本框内容的任何部分时, txt_BPName_Change()
都会运行。
您可以在代码中使用一系列条件来完成此工作,但更好的方法是:
txt_BPName_AfterUpdate()
焦点离开文本框后会发生AfterUpdate
事件,因此基本上在用户输入数据后会触发。