gpt4 book ai didi

excel - VBA 嵌套错误 GoTo

转载 作者:行者123 更新时间:2023-12-02 10:49:35 26 4
gpt4 key购买 nike

我有 VBA 代码,本应进行嵌套错误检查,但事实并非如此。代码伪如下。但是,每当错误中发生错误时(例如,循环中跳出错误,发生 goto SmallError,以及 SmallError 中发生错误),则不使用第二个 GoTo。然后该错误会破坏代码。

例如:

循环错误

转到小错误

小错误中的错误

代码中断(这里的代码应该转到 FatalError)

Sub DoThings()
On Error GoTo SmallError
'Coding Happens
Do While(conditionhere)
'Looping things happen
GoTo LoopResume
SmallError:
source = Err.source
descript = Err.Description
On Error GoTo Fatal Error
'Small error processing happens
Resume LoopResume
FatalError:
source = Err.source
descript = Err. Description
On Error GoTo ExitError
'Fatal Error processing happens
ExitError:
Exit Sub
LoopResume:
count = count + 1
Loop

On Error GoTo FatalError
'Finishing code happens
End Sub

最佳答案

您不能在错误处理程序中使用 On Error 语句。参见例如这个article that explains this .

但是,您可以做的是有一个单独的例程来处理“常规错误”。该例程可以有一个“ fatal error ”处理程序。您的代码将如下所示:

(编辑:编辑代码以在出现 fatal error 时启用退出):

Sub DoThings()
On Error GoTo SmallError
Dim fatalExit As Boolean
'Coding Happens
Do While(conditionhere)
'Looping things happen
LoopResume:
count = count + 1
Loop
On Error Goto SmallError2
'Finishing code happens
Exit Sub
SmallError:
handleError Err.Source, Err.Description, fatalExit
If fatalExit Then
Exit Sub
Else
Resume LoopResume
End If
SmallError2:
handleError Err.Source, Err.Description, fatalExit
Exit Sub
End Sub

Private Sub handleError(ByVal source As String,ByVal description As String, ByRef fatalExit As Boolean)
On Error Goto FatalError
'Do "small error" handling here
Exit Sub
FatalError:
fatalExit = True
'Do "fatal error" handling here
End Sub

关于excel - VBA 嵌套错误 GoTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15811713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com