【发布时间】:2017-08-19 17:19:10
【问题描述】:
在我的 Excel 文件中,我想实现自定义搜索。因此,我创建了一个名为“搜索”的工作表 - 在这张表上,我放置了一个文本框、一个按钮和一个简短的信息文本。 目前我检查每个工作表并复制第二行(我的列的标题),然后我将每个单元格的文本与搜索词进行比较,如果我找到匹配项,我将复制找到匹配项的行。
Private Sub SearchButton_Click()
Application.DisplayAlerts = False
Dim searchword As String
searchword = Worksheets("Search").SearchTextBox.Text
If Len(Trim(searchword)) > 0 Then
Worksheets("Search").Cells.Delete
Dim i As Long
i = 5
Dim found As Boolean
For Each Worksheet In ActiveWorkbook.Worksheets
Worksheet.Range("A2").EntireRow.Copy Worksheets("Search").Cells(i, 1)
i = i + 1
found = False
For Each cell In Worksheet.UsedRange.Cells
If InStr(cell.Text, searchword) > 0 Then
cell.EntireRow.Copy Worksheets("Search").Cells(i, 1)
found = True
i = i + 1
End If
Next
If found = True Then
i = i + 4
Else
Worksheets("Search").Rows(i - 1).Delete
End If
Next
Else
MsgBox "Empty TextBox!", vbOKOnly, "Error"
End If
Application.DisplayAlerts = True
End Sub
但是当一个单词在一行中出现多次时,此代码将多次复制该行。如果找到匹配项,如何跳转到下一行?
很高兴有任何帮助或想法
【问题讨论】:
-
使用一些标志来表明您在某个单元格中找到了您一直在寻找的内容,并使用
Exit For语句跳出循环:) -
@MichałTurczyn 如果我跳出循环,它将停止在工作表中搜索并转到下一个?!