Excel中的搜索栏

时间:2015-02-10 13:28:54

标签: excel searchbar

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

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

示例:

我有一个字符串"你好"在单元格中(" C12"),如果我输入我的TextBox hello并按下按钮,我希望它转到该单元格并选择它。

我已尝试过所有内容,在网上搜索,但我找不到任何合适的内容。

唯一可以工作的是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

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

1 个答案:

答案 0 :(得分:1)

这样的事情对你有用。它使用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