将你的on error语句放到该函数的变量定义之后

解决方案 »

  1.   

    on error goto err_handle应放在DIM 定义之后!
      

  2.   

    我认为:
    ON ERROR应放在第一句,DIM 之前
    不要使用GOTO
    MSGBOX 时,不要显示ERR.NUMBER,显示ERR.Description
      

  3.   

    多了一行err_handle:     andicount=0     
    while icount <900
         filename="c:\tmp\" & format(icount,"000")
         on error goto err_handle
         Open filename For Input Access Read As #1
         ...
         ...      Close #1
          icount=icount+1
        
    err_handle:
    MsgBox ("filename=" & filename & "     error is  :" & Str(Err.Number))
    wend
    ....
      

  4.   

    ...
    ...
    icount=0     
    while icount <900
         filename="c:\tmp\" & format(icount,"000")
         on error goto err_handle
         Open filename For Input Access Read As #1
         ...
         ...
         goto no_err
    err_handle:
         err_handle:
    MsgBox ("filename=" & filename & "     error is  :" & Str(Err.Number))
    no_err:        ******* 错误原因是在这里! ******
          Close #1
          icount=icount+1
    wend
    ....
    ...  
     你的错误: 如果这个文件不存在时,程序会跳转到err_handle处执行,但执行完毕后,会继续执行到no_err处,这时你的Close #1 就会出错!  建议:1、把on error goto err_handle移到循环外!
            2、把err_handle处代码移到这段程序的最后;
            3、取掉no_err。
      

  5.   

    如果需要重复处理错误,需要用resume,否则第二次出错将不会得到处理。err_handle:
        MsgBox ("filename=" & filename & "     error is  :" & Str(Err.Number))
        
        Resume no_errno_err:
        ....
      

  6.   

    另外最好将on error 移到while 之前
      

  7.   

    1、error_handle标签重复,实际运行时不可能编译通过,可能是输入错误?
    2、少了exit sub,这样错误处理代码执行后又到了Close #1,文件没有打开,当然要出错另外:
    1、on error方在需要判断的条件之前,这样的习惯很好,不必一定要放在过程开始的地方,不要被上面许多回答误导2、建议写法:
    ...
    ...
    icount=0     
    while icount <900
         filename="c:\tmp\" & format(icount,"000")
         on error resume next
         Open filename For Input Access Read As #1
         if err.number <> 0 then  '如果有错,则显示错误并退出,当然也可以不退出做其他处理
             MsgBox ("filename=" & filename & "     error is  :" & Str(Err.Number))
             exit sub
         end if
         on error goto 0  '恢复系统错误中断,以便捕获其他错误
         ...
         ...
          Close #1
          icount=icount+1
    wend
    ....
    ...