提醒用户重复输入userform上的文本框

时间:2016-04-12 16:34:12

标签: excel vba macros duplicates

我有一个带有文本框的用户表单,用于输入产品名称,我想在输入重复名称时提醒用户。在此列中输入的值将存储在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

1 个答案:

答案 0 :(得分:0)

您正在检查错误的事件以了解您需要做什么。

每次用户更改文本框内容的任何部分时,

txt_BPName_Change()都会运行。

您可以在代码中使用一系列条件来完成此工作,但更好的方法是:

txt_BPName_AfterUpdate()

焦点离开文本框后会发生AfterUpdate事件,因此基本上在用户输入数据后会触发。