У меня есть пользовательская форма с текстовым полем для ввода имени продукта, и я хотел бы предупредить пользователя, когда будет введено дублирующее имя. Значения, введенные в этот столбец, будут храниться в столбце A, а мой столбец A будет иметь значения, такие как Kat-1, kat-2, Amp-0, Pji-4 и т. Д. Я попробовал код ниже, но он дает мне дубликат записи когда вводится «k». По сути, я бы хотел, чтобы он полностью проверил «Kat-1», а затем отобразил дублирующее сообщение.Оповещать пользователя о двойной записи в текстовое поле на userform
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_Exit'. Затем он будет проверять только дублированные данные после того, как пользователь полностью набрал данные и попытается выполнить табуляцию или нажать что-нибудь еще (т. Е. Текстовое поле теряет фокус). – Tim
В дополнение к предложениям Тима и Стейбоба я хотел бы указать, что ваш цикл 'For Every cel In myrange' на самом деле не тестирует, если текущее значение TextBox' txt_BPName' является дубликатом того, что находится в диапазоне 'myrange'. Скорее, это тестирование, если 'myrange' имеет дубликаты, что, похоже, не полезно, поскольку контент' myrange' должен быть независимым от текущего значения текстового поля. Наконец, я предлагаю, чтобы у вас была «общая» проверка ваших соответствующих значений UserForm, когда пользователь нажимал кнопку «GO»: там вы можете выполнять скрещенные проверки и информировать пользователя обо всех недопустимых данных (если есть) – user3598756
Спасибо за Я сделал необходимые изменения. – Abhi0609