-
1. 录制宏获取代码
-
查找 B1 : B14 区域中 编号为 262101 的单元格
-
★★★注意:查找方法要录取到代码, 一定要点击:查找下一个, 然后关闭。点击二次可以得到 查找下一个 的相应代码。
-
如果只点击:查找全部,然后关闭, 会出现这种没有录制到 FIND 代码的情况。如下图:
-
-
正确录制到的代码:
-
-
代码:
-
Range("B1:B14").Select
Selection.Find(What:="262101", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate
Selection.FindNext(After:=ActiveCell).Activate
-
注释:
-
第一次点击 查找下一个,录制到的代码为:FIND 方法
-
不关闭 查找 对话框,第二次点击 查找下一个,录制到的为:Findnext 方法
-
① 只有在运行过 FIND 方法后,才能使用本方法。
-
② 查找下一个,到未尾后将回到开始位置继续搜索。
-
③ 为防止死循环,可保存第一次找到的单元格地址,然后测试下一个查找到的单元格地址是否与其相同的方法来选择是否退出循环。
-
FIND 方法参数详细说明:
-
① 必须输入项: What 需要搜索的内容,字符串或者任意类型
-
以下均为 可以不输入,使用默认值的参数, 根据需要输入。
-
② After 从该单元格之后开始后开始查找,如果不写,从查找区域的左上角之后开始查找。
-
③ LookIn 3种信息类型。xlComments:批注 xlFormulas: 公式 xlValues: 值
-
④ LookAt 二种: xlWhole:完全匹配 或 xlPart:部分匹配:即任一部分搜索文本
-
⑤ SearchOrder 二种:
-
xlByRows: 先将一行搜索完毕,再移到下一行进行搜索
-
xlByColumns:先将一列搜索完毕,再移到下一列进行搜索
-
⑥ SearchDirection 搜索方向: xlNext 搜索下个一匹配值 xlPrevious 搜索上一匹配值。
-
⑦ MatchCase: 是否区分大小写 True:区分,False:不区分。默认值为 False。
-
⑧ MatchByte: 基本不使用,是否匹配全角半角 True: 匹配 False 不匹配
-
⑨ SearchFormat: 基本不使用,搜索内容的格式,如:字体、边框等等。
-
根据以上内容可将代码修改成:
-
-
代码:
-
Set rng = Range("B1:B14").Find(What:="262101", LookAt:=xlPart, MatchByte:=False)
-
' 设置为变量 rng : 搜索 B1 : B14 区域, 条件为 "26101" , 部分匹配: 任一部分搜索文本 , 全角半角都匹配
-
If Not rng Is Nothing Then '如果 rng 不为空
-
c = rng.Address '记录第一次的地址
-
Debug.Print c & "第1次" '调试语句, 打印地址
-
k = 1 '计数, 为了调试用
-
Do
-
k = k + 1 '每查找到一次, 计数器 +1 , 为了调试用
-
Set rng = Range("B1:B14").FindNext(rng) '下一次查找
-
Debug.Print rng.Address & "第" & k; "次" '调试语句, 打印地址
-
Loop While Not rng Is Nothing And rng.Address <> c
-
' 如果对象不为空且地址不等于第1次记录的地址, 则退出循环
-
End If
-
注释: 图片中立即窗口的查找结果, 当代码执行到第四次查找到第1次的地址后, While 判断语句生效退出循环。