Ошибка несоответствия при заполнении поля со списком VBA - PullRequest
0 голосов
/ 25 февраля 2019

У меня проблема при попытке ввести в поле со списком (в пользовательской форме), чтобы найти совпадение.Когда я набираю неправильную букву / цифру, это немедленно дает ошибку несоответствия и направляет меня к коду VBA.Как я могу избежать этого?Что я могу добавить в свой код или изменить в свойствах?Потому что для пользователя принято вводить что-то неправильно, и я не хочу перенаправлять пользователей на код.

Это код моего поля со списком:

Private Sub ComboBox3_Change()

If Me.ComboBox3.Value <> "" Then
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("11")
    Set ph = ThisWorkbook.Sheets("22")
Dim i As String

i = Application.Match((Me.ComboBox3.Value), sh.Range("A:A"), 0)

    Me.TextBox8.Value = ph.Range("D" & i).Value
    Me.TextBox13.Value = ph.Range("P" & i).Value
    Me.TextBox41.Value = ph.Range("B" & i).Value

End If
End Sub

Private Sub UserForm_Activate()
Dim i As Integer

Me.ComboBox3.Clear
Me.ComboBox3.AddItem ""

For i = 2 To sh.Range("A" & Application.Rows.Count).End(xlUp).Row

    Me.ComboBox3.AddItem sh.Range("A" & i).Value

Next i

1 Ответ

0 голосов
/ 25 февраля 2019

Вы должны использовать оператор обработки ошибок, чтобы пропустить часть, которая генерирует ошибку.

Private Sub ComboBox3_Change()

If Me.ComboBox3.Value <> "" Then
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("11")
    Set ph = ThisWorkbook.Sheets("22")
Dim i As String
    or error go to MyHandler
    i = Application.Match((Me.ComboBox3.Value), sh.Range("A:A"), 0)

    Me.TextBox8.Value = ph.Range("D" & i).Value
    Me.TextBox13.Value = ph.Range("P" & i).Value
    Me.TextBox41.Value = ph.Range("B" & i).Value

End If
MyHandler:
' Expected behavior on error
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...