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”