我认为: ON ERROR应放在第一句,DIM 之前 不要使用GOTO MSGBOX 时,不要显示ERR.NUMBER,显示ERR.Description
多了一行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
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 .... ...
ON ERROR应放在第一句,DIM 之前
不要使用GOTO
MSGBOX 时,不要显示ERR.NUMBER,显示ERR.Description
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
....
...
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。
MsgBox ("filename=" & filename & " error is :" & Str(Err.Number))
Resume no_errno_err:
....
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
....
...