我在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

解决方案 »

  1.   

    在line1或line2后加 Err.Clear试一试。
      

  2.   

    同意楼上的,是err没有清空,在执行vlookup语句前加入 Err.Clear
    这样当vlookup执行发生错误时产生错误代码是正确的
      

  3.   

    程序可以修改成如下:
    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
      

  4.   

    程序可以修改成如下:
    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
      

  5.   

    你的第2个错误根本就不算什么跳转。
    并且line3之后的错误没有处理程序。也就是说如果错误发生在Line3之后,就会报错!
    所以line3之后还要启动错误处理程序加入 on error resume next 或者其它的on error...