如何让VBA代码在出现特定错误时重试?

如何让VBA代码在出现特定错误时重试?,vba,error-handling,Vba,Error Handling,我有一些代码偶尔会出错(如果有人在我试图读取时更改了数据库,因为我们的锁定设置为表级而不是行级,我无法更改) 当它出错时,我点击debug,然后点击continue,它继续它的快乐之路 在这个错误上是否可能只复制我的操作 On Error Resume next 将跳过出错命令并继续,我不想这样,我想继续使用发出错误的命令,因为它通常是有效的。但是,如果错误持续存在,那么可能存在更广泛的问题,我们应该停止 我想可能是一个错误捕获例程,然后检查错误代码,如果它是匹配的,它将继续(而不是下一步继续

我有一些代码偶尔会出错(如果有人在我试图读取时更改了数据库,因为我们的锁定设置为表级而不是行级,我无法更改)

当它出错时,我点击debug,然后点击continue,它继续它的快乐之路

在这个错误上是否可能只复制我的操作

On Error Resume next
将跳过出错命令并继续,我不想这样,我想继续使用发出错误的命令,因为它通常是有效的。但是,如果错误持续存在,那么可能存在更广泛的问题,我们应该停止

我想可能是一个错误捕获例程,然后检查错误代码,如果它是匹配的,它将继续(而不是下一步继续),如果不是,则通知用户。这听起来像是正确的方式吗

我已经把这段未经测试的代码打乱了,因为我并没有因为错误和错误处理而卧床不起,因为我通常将代码构建为不出错,但在这种情况下,它超出了我的控制

ErrHandler:
If Err.Number = -2147467259 Then
    ErrorCount = ErrorCount + 1 'This is set to 0 at the start of the code
    If ErrorCount > 5 Then
        MsgBox "5 Rowfetch errors occured, could be a wider issue"
        End
    End If
    Resume
End If
Err.Raise 'I Think this is wrong, how do I raise an error as VBA normally would?
我想出来了:

ErrHandler:
If Err.Number = -2147467259 Then
    ErrorCount = ErrorCount + 1
    If ErrorCount > 5 Then
        MsgBox "5 Rowfetch errors occured, could be a wider issue"
        End
    End If
    MsgBox "Stopped the error: " & ErrorCount 'In for testing to prove the error happened and was avoided
    Resume
End If
Err.Raise Err.Number
这是我没有弄清楚的部分:

Err.Raise Err.Number