查找方法只能在UserForm上运行一次

时间:2019-06-20 12:51:13

标签: excel vba

我正在尝试在文本框中的用户窗体中实现查找功能。

一旦检测到输入了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 :(得分:0)

您的代码对我来说很好。

代替此:

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

尝试更加明确:

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

Find()设置是“粘性”的,除非您明确指定它们,否则您将获得上次使用的任何设置。