中科医院专家微信 http://pf.39.net/bdfyy/bdflx/150217/4580330.html以quot;包含quot;方式查找,显示结果一查找结果二查找结果三查找结果四查找结果五查找参数与查找和替换对话框的关系。
我这个不是教程,我也是一个初学者,只是个人在自学过程中进行一些练习,分享给大家,希望对想要学习VBA的朋友有帮助,可能会存在错误的地方,欢迎指正。我不是专业人士,基本工作上也很少用到EXCEL,纯业余爱好。
SubFind查找方法()
DimfindValueAsRange
Dima,b
b=0
SetfindValue=ActiveSheet.usedrange.Find(what:=黄)
查找内容为“黄”字,如果加上参数lookat:=xlWhole,就是完全匹配,单元格只有一个“黄”字才算找到,这里演示的是不指定,默认就是单元格内容“包含”这个字就可以了,注意的事,如果手动在查找替换窗口里把“单元格匹配”勾打上的话,这里不进行设置会直接按手动在“查找替换”窗口中设置的值进行查找。找到就把当前位置绝对位置赋值给变量,如果要取找到的单元格的值后面加.value,这样可以获取到所有包含指定字符的所有单元格内容。
IfNotfindValueIsNothingThen
isnothing就是没事情发生,没有找到,前面加一个not,那意思就相反了,就是找到有,也可以前面不加not,只需要把下面ELSE前后位置调一下就可以了。
MsgBox第一个数据数据在单元格:findValue.Address以上一次查找到的位置往下查找
b=b+1’设置一个计数变量,统计一共找到多少个符合条件的
a=findValue.Address‘把第一个找到的地址赋值给变量a,以此对比是否已经全部查找完毕。
Else
MsgBox没有找到!
‘如果一个也没找到,直接提示没有找到,并退出sub程序块。
ExitSub
EndIf
Do
’开始循环查找,一般使用Do循环命令会在前面设置一个循环条件或在后面设置一个终止条件,我这里前后都没有设置,而是在中间对条件进行判断,当查找结束就使用exitdo命令退出do循环
SetfindValue=ActiveSheet.usedrange.FindNext(After:=findValue)
‘使用findnext继续往下查找,After参数是指定从哪个单元格的下一个开始查找,其中“:=”后面的findvalue是上一次查找到的位置对象变量,意思就是从这一个单元格的下一个单元格
IffindValue.Address=aThen如果当前的位置和最开始找到的位置一样,则
SetfindValue=Rows.FindPrevious(After:=findValue)以上一次查找到的位置继续往上查找,注意这个是往上查找,因为当前位置已经是最开始第一次找到的位置,往上找一次就是最后一个找到的位置。
MsgBox(一共找到b个)
MsgBox最后一个数据在单元格:findValue.Address
ExitDo
Else否则,如果当前找到的位置不是第一次找到的位置
b=b+1计数变量加1,并提示当时找到的是第几个符合条件的
MsgBox第b个找到的数据发现在单元格:findValue.Address
EndIf
Loop
EndSub
一开始忘了写退出DO循环语句,进入死循环,如果不是弹出消息框,或许很快电脑就当机了,如果遇到了死循环可按ctrl+pausebreak键终止循环
最后说明一个find命令及参数,由于在“查找替换窗口里设置的参数会对这里没设置参数的默认值产生影响,建议把必要的参数进行设置。”
表达式.Find(What,After,LookIn,LookAt,SearchOrder,SearchDirection,MatchCase,MatchByte,SearchFormat)
表达式一个代表Range对象的变量。
What,必选,要搜索的数据。可为字符串或任意MicrosoftExcel数据类型。
After,可选,表示搜索过程将从其之后开始进行的单元格。此单元格对应于从用户界面搜索时的活动单元格的位置。请注意:After必须是区域中的单个单元格。要记住搜索是从该单元格之后开始的;直到此方法绕回到此单元格时,才对其进行搜索。如果不指定该参数,搜索将从区域的左上角的单元格之后开始。
LookIn,可选,信息类型。可以为以下常量之一:xlValues、xlFormulas或者xlComments,默认值为xlFormulas。对应于“查找与替换”对话框中,“查找范围”下拉框中的选项。
LookAt,可选,可为以下XlLookAt常量之一:xlWhole或xlPart.用来指定所查找的数据是与单元格内容完全匹配还是部分匹配,默认值为xlPart。对应于“查找与替换”对话框中,“单元格匹配”复选框。
SearchOrder,可选,可为以下XlSearchOrder常量之一:xlByRows或xlByColumns。用来确定如何在单元格区域中进行查找,是以行的方式(xlByRows)查找,还是以列的方式(xlByColumns)查找,默认值为xlByRows
SearchDirection,可选,搜索的方向。用来确定查找的方向,即是向前查找(XlPrevious)还是向后查找(xlNext),默认的是向后查找。
MatchCase,可选,如果为True,则搜索区分大小写。默认值为False。
MatchByte,可选,即是否区分全角或半角,在选择或安装了双字节语言时使用。若该参数为True,则双字节字符仅与双字节字符相匹配;若该参数为False,则双字节字符可匹配与其相同的单字节字符。对应于“查找与替换”对话框中,“区分全角/半角”复选框。
SearchFormat,可选,搜索的格式。