我目前正在处理一个需要搜索栏的Excel项目。我刚刚开始使用Excel,所以我真的是个菜鸟。
我有一个TextBox,可以在其中输入文本。和旁边的一个按钮,这样我就可以执行搜索。搜索应从RANGE(“ A:E”)中进行。我需要它来突出显示结果。
例子:
我在单元格(“ C12”)中有一个字符串“ hello”,如果我在TextBox中打了个招呼,然后按一下按钮,我希望它转到该单元格并选择它。
我已经尝试了一切,在网络上搜索,但找不到合适的东西。
唯一可行的方法是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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句