我遇到的这个问题是我的错误处理程序没有捕获错误,如果它发生超过2次。这就是我正在使用的。
Private Sub DBBackUp()
On Error GoTo ErrHandler:
If FSO.FolderExists(DBBackupFolderDir) = True And FSO.FileExists(DBDir) = True Then
AskAgianLoop:
Application.CompactRepair DBDir, CARDBBackupFileDir, True
End if
ErrHandler:
If Err.Number = 58 Or Err.Number = 31523 Then
GoTo AskAgianLoop
Else
errMsg = "Error number: " & Str(Err.Number) & vbNewLine & _
"Source: " & Err.Source & vbNewLine & _
"Description: " & Err.Description
Debug.Print errMsg
Err.Clear
End If
Exit Sub
End Sub
以上将通过安全警告提示用户每次运行2次。如果用户单击其中一个而不是打开取消,则会抛出一个值为31523
的错误代码。然后将其移至ErrHandler。然后,将使用相同的安全提示再次询问用户。如果用户按下取消超过2次,则显示值为31523
的错误消息,并且不会被错误处理程序捕获。
答案 0 :(得分:0)
将GoTo AskAgianLoop
更改为Resume AskAgianLoop:
解决了问题。