我在vba中编写了下面的程序来查询,因为VLOOKUP查不到对应数据时会返回错误所以用了错误跳转语句。实际使用时发现如果是连续两个数据查询返回错那第2个错误就无法跳转,请高手帮忙看一下问题在哪里。line1:
On Error Resume Next
如果批量返回为错误就跳转
pil = Application.WorksheetFunction.VLookup(wul, Range("零件批量!a:b"), 2, 0)
If Err.Number = 1004 Then
GoTo line2
Else: End If
Call jiagf(a, wul, pil, c)
a = a + 1
GoTo line1
line2:
On Error GoTo line3
jyj = Application.WorksheetFunction.VLookup(wul, Range("财务价格!a:c"), 3, 0) '查询交易价line3:
Sheets("工艺路线").Cells(a, 1) = "无交易价格"
a = a + 1
b = 2
GoTo line1
On Error Resume Next
如果批量返回为错误就跳转
pil = Application.WorksheetFunction.VLookup(wul, Range("零件批量!a:b"), 2, 0)
If Err.Number = 1004 Then
GoTo line2
Else: End If
Call jiagf(a, wul, pil, c)
a = a + 1
GoTo line1
line2:
On Error GoTo line3
jyj = Application.WorksheetFunction.VLookup(wul, Range("财务价格!a:c"), 3, 0) '查询交易价line3:
Sheets("工艺路线").Cells(a, 1) = "无交易价格"
a = a + 1
b = 2
GoTo line1
这样当vlookup执行发生错误时产生错误代码是正确的
line1: On Error Resume Next' 如果批量返回为错误就跳转
pil = Application.WorksheetFunction.VLookup(wul, Range("零件批量!a:b"), 2, 0)
If Err.Number = 1004 Then GoTo line2
Call jiagf(a, wul, pil, c)
a = a + 1
GoTo line1
jyj = Application.WorksheetFunction.VLookup(wul, Range("财务价格!a:c"), 3, 0)
line3: Sheets("工艺路线").Cells(a, 1) = "无交易价格"
a = a + 1
b = 2
GoTo line1
line1: On Error Resume Next' 如果批量返回为错误就跳转
pil = Application.WorksheetFunction.VLookup(wul, Range("零件批量!a:b"), 2, 0)
If Err.Number = 1004 Then GoTo line2
Call jiagf(a, wul, pil, c)
a = a + 1
GoTo line1
line2: jyj = Application.WorksheetFunction.VLookup(wul, Range("财务价格!a:c"), 3, 0)
line3: Sheets("工艺路线").Cells(a, 1) = "无交易价格"
a = a + 1
b = 2
GoTo line1
并且line3之后的错误没有处理程序。也就是说如果错误发生在Line3之后,就会报错!
所以line3之后还要启动错误处理程序加入 on error resume next 或者其它的on error...