Excel 中的搜索栏

Search bar in Excel

我目前正在开发一个 Excel 项目,该项目需要一个搜索栏。我刚开始使用 Excel,所以我真的是个菜鸟。

我有一个可以输入文本的文本框。它旁边有一个按钮,所以我可以执行搜索。搜索应从 RANGE("A:E") 开始搜索。我需要它来突出显示结果。

示例:

我在单元格 ("C12") 中有一个字符串 "hello",如果我在 TextBox 中输入 hello 并按下按钮,我希望它转到那个单元格并且 select它。

我已经尝试了所有方法,搜索了网络,但找不到合适的东西。

唯一可以工作的是 VLOOKUP,但我需要它超过 1 列,所以它不会工作。这应该像 ctr+F 一样工作,但我找不到任何看起来像那样的东西。

唯一可行的代码是我手动向下查看每个单元格并检查字符串的代码:

Sub Button1_Click()
Dim Column, Row As Integer
Dim Search As String
String = TextBox.Text
For Column = 1 To 5
    For Row = 1 To 1048576
        If Cells(Row, Column).Value = Search Then
            Cells(Row, Column).Select
        End If
    Next
Next

End Sub

但是这段代码给出了溢出错误。如果你能帮助我,我会喜欢的。

像这样的东西应该适合你。它使用 range.find 循环而不是强力循环,因此效率更高,并且会避免溢出错误

Private Sub Button1_Click()

    Dim rngFound As Range
    Dim rngSelect As Range
    Dim strFind As String
    Dim strFirst As String

    If Len(Trim(Me.TextBox.Text)) = 0 Then
        Me.TextBox.SetFocus
        MsgBox "Must provide text to search for.", , "No Search Text"
        Exit Sub
    End If

    strFind = Me.TextBox.Text
    Set rngFound = Range("A:E").Find(strFind, Cells(Rows.Count, "E"), xlValues, xlPart, MatchCase:=False)

    If rngFound Is Nothing Then
       MsgBox "No matches found for [" & strFind & "]", , "No Matches"
       Exit Sub
    Else
        strFirst = rngFound.Address
        Set rngSelect = rngFound
        Do
            Set rngSelect = Union(rngSelect, rngFound)
            Set rngFound = Range("A:E").FindNext(rngFound)
        Loop While rngFound.Address <> strFirst
    End If

    rngSelect.Select

End Sub