我正在构建一个“编辑产品”用户表单,并使用instr从其主要分配代码中查找搜索的产品。问题:搜索返回错误的产品。假设我想要代码为“1”的产品,它给了我代码为“13”的产品(这是测试数据库中最新的13个项目),我认为它从所有结果中获取第一个索引答案,而不是直接匹配。也许我应该使用match而不是instr,因为它在单元格上总是一个整数值?
Private Sub TextBox1_Change()
On Error Resume Next
Dim Abas As Worksheet
Dim linha As Integer
Dim xPesq As String
Dim xCel As String
Dim xPlan As String
Sheets("Produtos").Select
Planilha1.Activate
xPlan = Planilha1.Name
xPesq = Edi_Pro.TextBox1.Text
linha = 3
Set Abas = ThisWorkbook.Worksheets(xPlan)
With Abas
While .Cells(linha, 2) <> Empty
xCel = .Cells(linha, 2)
If InStr(1, UCase(xCel), UCase(xPesq), 0) Then
Edi_Pro.TextBox2.Value = .Cells(linha, 3)
Edi_Pro.TextBox3.Value = .Cells(linha, 4)
Edi_Pro.TextBox4.Value = .Cells(linha, 5)
Edi_Pro.ComboBox1.Value = .Cells(linha, 7)
ElseIf xCel = "" Then
Edi_Pro.TextBox2.Value = ""
Edi_Pro.TextBox3.Value = ""
Edi_Pro.TextBox4.Value = ""
Edi_Pro.ComboBox1.Value = ""
End If
linha = linha + 1
Wend
End With
End Sub
字符串
2条答案
按热度按时间iibxawm41#
尝试了这个代码,它工作了。黑猫是正确的方式,原来的代码循环设置它会给予我总是最后的结果,循环,所以我尝试了另一种方法,这工作。
字符串
vuktfyat2#
也可以使用
Match()
如果你不使用
WorksheetFunction
,就不需要On Error Resume Next
--你可以测试返回值。字符串