我目前正在开发一个需要搜索栏的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
但是这段代码会出现溢出错误。如果你能帮助我,我会喜欢它。
答案 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