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
我目前正在开发一个 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