工具库存清单的搜索框功能

时间:2018-05-29 16:13:03

标签: excel vba automation

我在excel标签中为工具库存创建了一个模板" ESOS"和另一个用于搜索功能选项卡sheet2的选项卡。 搜索工作正常,但如果我没有输入整个单词或工具名称的确切单词,我将无法工作。 示例:要查找钻头,我必须输入正确的单词"钻头"。我想知道是否有一种方法可以让VBA搜索功能搜索整个列表,即使我只输入了Dri或者。 enter image description here 这是代码。

Option Compare Text

Sub searchable()
Dim erow As Long
Dim ws As Worksheet
Dim lastrow As Long
Dim count As Integer


lastrow = Sheets("ESOS").Cells(Rows.count, 1).End(xlUp).Row
Sheet2.Range("a11:F6000").ClearContents

count = 0

Dim p As Long

p = 11

For x = 2 To lastrow

If Sheets("ESOS").Cells(x, 1) = Sheet2.Range("B3") Then
     Sheet2.Cells(p, 1) = Sheets("ESOS").Cells(x, 1)
     Sheet2.Cells(p, 2) = Sheets("ESOS").Cells(x, 2)
     Sheet2.Cells(p, 3) = Sheets("ESOS").Cells(x, 3)
     Sheet2.Cells(p, 4) = Sheets("ESOS").Cells(x, 4)
     Sheet2.Cells(p, 5) = Sheets("ESOS").Cells(x, 5)
     Sheet2.Cells(p, 6) = Sheets("ESOS").Cells(x, 6)
     p = p + 1
     count = count + 1
End If
Next x

MsgBox " The number of data found for this item code is " & "" & count

End Sub

1 个答案:

答案 0 :(得分:2)

要获得部分匹配,请更改:

If Sheets("ESOS").Cells(x, 1) = Sheet2.Range("B3") Then

要:

If InStr(Sheets("ESOS").Cells(x, 1), Sheet2.Range("B3")) > 0 Then

您还可以考虑使搜索不区分大小写:

If InStr(LCase(Sheets("ESOS").Cells(x, 1)), LCase(Sheet2.Range("B3"))) > 0 Then

另外,将Integer声明为一般的错误做法,尤其是如果此变量存储行号,则应该避免这种做法。如果行超过32 767,您的宏将崩溃,尽管在这种情况下它是结果行的数量,这应该永远不会这么多。请改用Long