Метод поиска работает только один раз на UserForm - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь реализовать функцию поиска в пользовательской форме в текстовом поле.

Как только он обнаруживает, что введены 4 цифры, он ищет это значение в списке моделей в диапазоне ("C39: C102").

Возвращает значение ячейки, которая находится на две ячейки слева от нее (там хранится имя группы, которой принадлежит номер модели), и изменяет комбинированный список, чтобы выбрать эту ячейку.группа автоматически.

В диапазоне («C39: C102») имеется несколько номеров моделей для каждой ячейки, например:

C39 = 9070, 4835, 2858, 2853

C40 = 2374, 2737, 8857, 9895

и т. Д.

Макрос запускается в первый раз после открытия листа Excel, но когда я ищу вторуюномер модели указывается как «не найдено».

Private Sub TextBox5_Change()
    'when user inputs a model number automatically change the combo box below it to correct group
    Dim rng1 As Range
    Dim modelNum As String

    If Len(TextBox5.Text) = 4 Then
        modelNum = TextBox5.Value
        Set rng1 = Range("C39:C102").Find(modelNum)
        If Not rng1 Is Nothing Then
            ComboBox1.Value = rng1.Offset(0, -2)
            MsgBox "This tool (" & modelNum & ") belongs to " & rng1.Offset(0, -2) & " group."
        Else
            MsgBox modelNum & " not found"
        End If
        TextBox5.Value = ""
        modelNum = ""
        Set rng1 = Nothing
        'ComboBox1.Value = ""
    End If    

End Sub

1 Ответ

0 голосов
/ 22 июня 2019

Ваш код отлично работает для меня.

Вместо этого:

Set rng1 = Range("C39:C102").Find(modelNum)

попробуйте быть немного более явным

Set rng1 = Range("C39:C102").Find(What:=modelNum, Lookin:=xlValue, LookAt:=xlWhole)

Настройки Find () в Excel «липкие», и если вы не укажете их явно, вы получите те настройки, которые использовались в последний раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...