Текстовое поле VBA Excel очищается после появления окна сообщения - PullRequest
1 голос
/ 12 февраля 2020

Мой код ищет идентификатор в столбце «А», если он совпадает, а затем выдает сообщение, чтобы пользователь не мог ввести другого человека с таким же идентификатором. Я хотел что-то простое и эффективное, так что это работает. Проблема в том, что когда я очищаю значение, оно снова появляется в том же окне сообщения, даже когда текстовое поле очищено. Есть ли способ решить эту проблему?

Private Sub TextBox1_Change()

    Dim controlrow
    Dim lookrow

    controlrow = Me.TextBox1.Value
    Set lookrow = Hoja4.Range("A:A").Find(What:=controlrow, LookIn:=xlValues)

    If Me.TextBox1.Value = lookrow.Value Then
    MsgBox "El ID ya existe"
    Me.TextBox1.Value = ""
    End If

End Sub

1 Ответ

3 голосов
/ 12 февраля 2020

Измените свой код, чтобы сначала проверить, является ли текстовое поле пустым.

Как уже упоминалось @JvdV, вам также нужно кодировать возможность того, что искомое значение никогда не будет найдено. Когда это произойдет, вы ошибетесь при попытке сравнить Something с Nothing


Private Sub Textbox1_Change()

If Me.TextBox1.Value = "" Then
    Exit Sub
End If

Dim controlrow
Dim lookrow As Range

controlrow = Me.TextBox1.Value
Set lookrow = Hoja4.Range("A:A").Find(controlrow, LookIn:=xlValues)

If Not lookrow Is Nothing Then
    If Me.TextBox1.Value = lookrow.Value Then
        MsgBox "El ID ya existe"
        Me.TextBox1.Value = ""
    End If
End If

End Sub
...