1. 程式人生 > >在Word 巨集 VBA迴圈中使用on error的錯誤處理方法

在Word 巨集 VBA迴圈中使用on error的錯誤處理方法

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迴圈中的多次遇錯處理。