Excel VBA代码如果匹配不到则跳转至下一行的代码怎么写?
关注者
2
被浏览
6,133
登录后你可以
不限量看优质回答
私信答主深度交流
精彩内容一键收藏
可以参考下面的例子
Option Explicit '要求显式声明变量
Sub test() '定义一个过程
Dim b, a '定义两个变量,a用来存储要查找的值所在行,b用来接收Match函数返回的结果以便下一步处理
a = 1 '定义从第一行开始
While Cells(a, 1) <> ""
'while循环,从第一行开始处理,假如第a行,第一列数据不为空,则执行循环里面的语句,否则结束执行
On Error Resume Next '开启错误屏蔽模式,出现错误时继续执行,由下一步判断Match函数匹配是否正常匹配到数据
b = WorksheetFunction.Match(Cells(a, 1), [H1:H5], False)'从H1:H5中查找是否存在第a行第1列的数据,要求精确匹配
If Err.Number = 0 Then '这就是上面一步On Error Resume Next 要达到的效果,如果Match没有匹配到结果,
'正常情况会出现报错的,这里通过使用On error resume next来继续执行,通过处理Err对象来判断是否正常匹配
Cells(a, 2) = "ok" '如果正常匹配(也就是没有报错的情况下),那么Err.Number为0,在第a行,第2列写入“ok”
Cells(a, 2) = "ng" '如果不正常匹配(也就是有报错的情况下),那么Err.Number不为0,在第a行,第2列写入“ng”
End If
a = a + 1 '实现a+1,循环处理下一行
On Error GoTo 0 '退出错误屏蔽模式
End Sub'结束过程定义
Option Explicit '要求显式声明变量
Sub test() '定义一个过程
Dim b, rowNum '定义两个变量,rowNum用来存储要查找的值所在行,b用来接收Match函数返回的结果以便下一步处理
dim rowStart as long,rowEnd as long,findColumn as long,stateColumn as long,findinArea as string
rowStart = 1 '设置需要查找的数据起始行
rowEnd = 100 '设置需要查找的数据末尾行
findColumn = 1 '查找值所在列
stateColumn = 2 '状态所在列
findinArea = "H1:H100" '定义所需查找匹配的区域
rowNum = rowStart '定义开始行
While rowNum<=rowEnd
'while循环,从rowStart行开始处理,
if cells(rowNum,findColumn)<>"" '假如第rowNum行,第findColumn列数据不为空,则执行循环里面的语句,否则跳过到下一行
On Error Resume Next '开启错误屏蔽模式,出现错误时继续执行,由下一步判断Match函数匹配是否正常匹配到数据
b = WorksheetFunction.Match(Cells(rowNum, findColumn), range(findinArea), False)'从H1:H5中查找是否存在第rowNum行第1列的数据,要求精确匹配
If Err.Number = 0 Then '这就是上面一步On Error Resume Next 要达到的效果,如果Match没有匹配到结果,
'正常情况会出现报错的,这里通过使用On error resume next来继续执行,通过处理Err对象来判断是否正常匹配
Cells(rowNum, stateColumn) = "ok" '如果正常匹配(也就是没有报错的情况下),那么Err.Number为0,在第rowNum行,第2列写入“ok”
Cells(rowNum, stateColumn) = "ng" '如果不正常匹配(也就是有报错的情况下),那么Err.Number不为0,在第rowNum行,第2列写入“ng”