我正在尝试在文本框中的用户窗体中实现查找功能。
一旦检测到输入了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
答案 0 :(得分:0)
您的代码对我来说很好。
代替此:
Set rng1 = Range("C39:C102").Find(modelNum)
尝试更加明确:
Set rng1 = Range("C39:C102").Find(What:=modelNum, Lookin:=xlValue, LookAt:=xlWhole)
excel中的Find()设置是“粘性”的,除非您明确指定它们,否则您将获得上次使用的任何设置。