gpt4 book ai didi

vba - 确定 VBA 中当前错误处理方法的语法

转载 作者:行者123 更新时间:2023-12-04 18:40:09 24 4
gpt4 key购买 nike

在我的代码中的任何给定行上,我是否可以将 Debug.Print() 与其他一些命令一起使用来找出如果我的代码在该行遇到错误会发生什么?

我可以使用 Debug.Print 中的任何语句来确定当前的错误处理过程是转到 0、继续下一步还是转到某个标签?

我正在设想这样的事情:

Debug.Print(OnErrorMode)

我正在寻找一种方法来确定特定的代码行是否会出错 GoTo 0 (停止并显示错误), Resume Next (跳过该行),或 GoTo Label (跳转到标签)鉴于 On Error可能被埋在我找不到的代码中的某个地方。那可能吗?

最佳答案

在使用 VBA 和 VB(5 和 6)的十多年中,我有 从来没有看到一个引用,即使是远程暗示一个人可能能够确定存在哪些错误捕获条件。 虽然编译器肯定知道,但它没有暴露。

在我看来,您的问题可能与您如何构建错误捕获有关。

我将子例程包装在单个 On Error Goto 语句中,该语句位于与 On Error 相同的子例程中。我有一个导出,当错误发生时,我会记录发生的事情,以便我可以修复错误。然后我可以使用 debug.print 或创建一个带有附加到日志的调试信息的字符串。

Sub main()
On Error GoTo Main_Error
'Insert Code Here
Exit Sub
Main_Error:
WriteLog Err.Number, Err.Description
MsgBox ("The program encoutnered an error.")
End Sub
Private Sub WriteLog(ErrNum As Integer, ErrDes As String)
Open "Errors.txt" For Append As #1
Print #1, Now & " " & ErrNum & " - " & ErrDes
Close #1
End Sub

我使用的第二种模式是在很可能发生错误的区域,例如打开文件(文件可能丢失)或数据库。然后我像这样使用 try catch 块一样的错误捕获。
Private Function LoadFile() As Boolean
On Error GoTo Main_Error
'Code before a potentially error-prone statement
On Error Resume Next
Open "aMissingFile.txt" For Input As #1
If Err.Number <> 0 Then
MsgBox ("aMissingFile.txt is missing")
LoadFile = False
Exit Function
End If
On Error GoTo LoadFile_Error
'The rest of your code
LoadFile = True
Exit Function
LoadFile_Error:
WriteLog Err.Number, Err.Description
MsgBox ("The program encoutnered an error.")
LoadFile = False
End Function

这使得处理错误更容易,调试就像注释掉单个 On error 语句一样简单。请注意 err.number 列出了错误代码返回,因此您可以添加逻辑来处理不同类型的错误。

关于vba - 确定 VBA 中当前错误处理方法的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28219063/

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