Word中的宏采用VBA,但是不支持VB中的错误处理机制,只能on error设置错误陷阱的方法进行错误处理。一般有以下几种方法:
方法一:
On Error Resume Next
使用这种方法会在遇到错误语句时跳过此句,继续运行下一句。
方法二:
On Error GoTo [Line]
[Line]可以是行号或者一个标签,如果发生错误,则程序会跳到[Line]指定的位置,激活错误处理程序。指定的[Line]必须与On Error 语句处于同一过程;否则会发生错误。
方法三:
On Error GoTo 0
On Error GoTo 0 禁止当前过程中任何已启动的错误处理程序。On Error GoTo 0 停止在当前过程中处理错误。即使过程中包含编号为 0 的行,它也不把行 0 指定为处理错误的代码的起点。如果没有 On Error GoTo 0 语句,在退出过程时,错误处理程序会自动关闭。
现在遇到的问题主要是在for循环中使用on error语句进行错误处理后如果循环中多次出现错误则第二次的错误无法继续进行正常的错误处理,解决方法是使用Rusume语句恢复执行,但如果程序中存在多行相应出错行,则需要配合On Error GoTo [line]和Resume [line]。
范例如下:
Sub Test()
Dim i, j, k As Integer
j = -1
On Error GoTo errHandler
For i = 0 To 5
k = 100 / (i * j) + 1
MsgBox k
continue:
j = j + 1
Next
Exit Sub
errHandler:
Err.Clear
Resume continue
End Sub
通过On Error GoTo [line]和Resume [line]配合使用就解决了for循环中的多次遇错处理。