通过关键字search而不是string

我正在研究一个项目,在其中search整个工作簿,然后在search页面上显示结果。 到目前为止,我已经能够search一个string,并find该string。 但是,如果我只是search像“电机”这样的关键字,它将不会显示任何结果,因为工作簿中的任何位置都不是“电机”写入单元格中的位置。 他们的任何方式,我可以做到这一点,所以它会searchsearch框中键入的任何东西?

图片的搜索页面

其中一个数据页的图片

这是代码。 search脚本是Sub FindOne()

Private Sub ComboBox1_Change() End Sub Private Sub ComboBox2_Change() UpdateSearchBox End Sub Private Sub CommandButton1_Click() Select Case TextBox1.Value Case "F" TextBox1.Value = "G" Case "E" TextBox1.Value = "F" Case "D" TextBox1.Value = "E" Case "C" TextBox1.Value = "D" Case "B" TextBox1.Value = "C" Case "A" TextBox1.Value = "B" Case "G" TextBox1.Value = "A" End Select End Sub Private Sub CommandButton2_Click() FindOne End Sub Private Sub TextBox1_Change() UpdateSearchBox End Sub Sub UpdateSearchBox() Dim PageName As String, searchColumn As String, ListFiller As String Dim lastRow As Long If TextBox1.Value <> "" Then PageName = TextBox1.Value Else Exit Sub End If Select Case ComboBox2.Value Case "EQUIPMENT NUMBER" searchColumn = "A" Case "EQUIPMENT NAME" searchColumn = "C" Case "DUPONT NUMBER" searchColumn = "F" Case "SAP NUMBER" searchColumn = "G" Case "SSI NUMBER" searchColumn = "H" Case "PART NAME" searchColumn = "I" Case "" MsgBox "Please select a value for what you are searching by." End Select lastRow = Sheets(PageName).Range("A65536").End(xlUp).Row If lastRow <> 0 And PageName <> "" And searchColumn <> "" Then ListFiller = PageName & "!" & searchColumn & "2" & ":" & searchColumn & lastRow ComboBox1.ListFillRange = ListFiller End If End Sub Sub FindOne() Range("B19:J1500") = "" Application.ScreenUpdating = False Dim k As Integer, EndPasteLoopa As Integer Dim myText As String, searchColumn As String Dim totalValues As Long Dim nextCell As Range k = ThisWorkbook.Worksheets.Count myText = ComboBox1.Value Set nextCell = Range("B20") If myText = "" Then MsgBox "No Address Found" Exit Sub End If Select Case ComboBox2.Value Case "EQUIPMENT NUMBER" searchColumn = "A" Case "EQUIPMENT NAME" searchColumn = "C" Case "DUPONT NUMBER" searchColumn = "F" Case "SAP NUMBER" searchColumn = "G" Case "SSI NUMBER" searchColumn = "H" Case "PART NAME" searchColumn = "I" Case "" MsgBox "Please select a value for what you are searching by." End Select For i = 2 To k totalValues = Sheets(i).Range("A65536").End(xlUp).Row ReDim AddressArray(totalValues) As String For j = 0 To totalValues AddressArray(j) = Sheets(i).Range(searchColumn & j + 1).Value Next j For j = 0 To totalValues If (myText = AddressArray(j)) Then EndPasteLoop = 1 If (Sheets(i).Range(searchColumn & j + 2).Value = "") Then EndPasteLoop = Sheets(i).Range(searchColumn & j + 1).End(xlDown).Row - j - 1 For r = 1 To EndPasteLoop Range(nextCell, nextCell.Offset(0, 8)).Value = Sheets(i).Range("A" & j + r, "I" & j + r).Value Set nextCell = nextCell.Offset(1, 0) Next r End If Next j Next i Application.ScreenUpdating = True End Sub 

我不知道这是否可能。 谢谢!

使用Instrfunction。 这是一个如何工作的例子:

 Dim startPosition As Integer startPosition = InStr("find the comma, in the string", ",") 

这一点代码将返回15,说那里的位置有一个,是第15个位置。

现在只需调整这个代码。 重复您想要search的内容。 如果InStr函数没有返回0,你就有了(半)匹配。

如果您想了解更多信息,请转到此问题: 检查一个string是否包含另一个string 。

@ASH在评论中回答了这个问题。