VBA代码仅显示包含与输入字段类似文本的行?
我是VBA新手,正在尝试拼凑一些代码,允许用户在单元格中输入一个单词(或几个单词),然后显示匹配行条目的列表 我尝试了以下代码,但得到了一个“VBA代码仅显示包含与输入字段类似文本的行?,vba,excel,Vba,Excel,我是VBA新手,正在尝试拼凑一些代码,允许用户在单元格中输入一个单词(或几个单词),然后显示匹配行条目的列表 我尝试了以下代码,但得到了一个“instring=type mismatch”错误 请注意,“B3”是专用于“搜索词”的字段,F列是包含我要在其中搜索的文本的列。如果包含该单词,我想显示该行并隐藏所有不包含该单词的行 Sub Find_Possible_Task() ROW_NUMBER = 0 SEARCH_STRING = Sheets("codeset").Range("
instring=type mismatch
”错误
请注意,“B3
”是专用于“搜索词”的字段,F
列是包含我要在其中搜索的文本的列。如果包含该单词,我想显示该行并隐藏所有不包含该单词的行
Sub Find_Possible_Task()
ROW_NUMBER = 0
SEARCH_STRING = Sheets("codeset").Range("B3")
ROW_NUMBER = ROW_NUMBER + 1
ITEM_IN_REVIEW = Sheets("codeset").Range("F:F")
If InStr(ITEM_IN_REVIEW, SEARCH_STRING) Then
Do
Cells(c.Row).EntireRow.Hidden = False
Loop Until ITEM_IN_REVIEW = ""
End If
End Sub
蒂亚> P>代替Stand(),考虑Real.Fin().< /P>
可选地,考虑使用过滤器表: 1.检查您的表是否启用了筛选器==>如果是,则通过。如果否,则打开过滤器。
2.筛选关键字的F列以在单元格B3中包含值。一些错误的编码约定,甚至可能是完全错误:
Sub
过程的范围Public/Private
,是一种很好的做法Dim
关键字声明它们选项Explicit
将帮助您防止上述错误Const
)保留所有caps变量名称是惯例
如果有任何问题,请告诉我。您好,我用一些格式编辑了您的问题,但请在代码中使用一些缩进,并停止在每行代码后添加空换行符,以供将来参考。它会严重损害可读性,需要帮助,twenty49!这解决了我的问题。
Sub Find_Possible_Task()
Dim SEARCH_STRING As String
Dim ITEM_IN_REVIEW As Range
Dim found As Range
Dim i As Integer
SEARCH_STRING = Sheets("Sheet1").Range("B3").Value
i = 1
Do
Set ITEM_IN_REVIEW = Sheets("Sheet1").Cells(i, 6)
Set found = ITEM_IN_REVIEW.Find(What:=SEARCH_STRING)
If found Is Nothing Then
ITEM_IN_REVIEW.EntireRow.Hidden = True
End If
i = i + 1
Loop Until ITEM_IN_REVIEW = ""
End Sub
Option Explicit
Private Sub keep_matches()
Dim what As Range
Dim where As Range
Dim res As Range ' result
Dim lr As Long ' last active row
Dim ws As Worksheet: Set ws = Sheets("codeset")
lr = ws.Cells(ws.Rows.Count, "F").End(xlUp).Row
Set what = ws.Range("B3")
Set where = ws.Range("F1:F" & lr)
' we'll create an extra column for a loop in our .Find method
where.Copy
ws.Range("F1").EntireColumn.Insert
ws.Range("F1").PasteSpecial xlPasteValues
where.EntireRow.Hidden = True ' preemptively hide them all
Set where = ws.Range("F1:F" & lr)
Set res = where.Find(what, lookIn:=xlValues) ' ilook for matches, 1st attempt
If Not res Is Nothing Then ' if found
Do Until res Is Nothing ' repeat for all results
res.EntireRow.Hidden = False
res = "Checked"
Set res = where.FindNext(res)
Loop
Else
MsgBox("No matches were found")
where.EntireRow.Hidden = False ' we don't wanna hide anything
End If
ws.Range("F1").EntireColumn.Delete ' remove the extra help column for Find method
End Sub