Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定VBA中当前错误处理方法的语法_Vba - Fatal编程技术网

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

确定VBA中当前错误处理方法的语法,vba,Vba,在代码中的任何给定行上,我是否可以使用Debug.Print()和其他命令来找出如果代码在该行上遇到错误会发生什么情况 我可以使用Debug.Print中的任何语句来确定当前错误处理过程是转到0、继续下一步还是转到某个标签 我的设想是: Debug.Print(OnErrorMode) 我正在寻找一种方法来确定出现错误的特定代码行是否将转到0(停止并显示错误)、下一步继续(跳过该行)或转到标签(跳到标签),因为我的代码中可能隐藏了一个我找不到的。这是可能的吗?在使用VBA和VB(5和6)的十多

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

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

我的设想是:

Debug.Print(OnErrorMode)

我正在寻找一种方法来确定出现错误的特定代码行是否将
转到0
(停止并显示错误)、
下一步继续
(跳过该行)或
转到标签
(跳到标签),因为我的代码中可能隐藏了一个我找不到的
。这是可能的吗?

在使用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
私有函数LoadFile()为布尔值
On错误转到Main_错误
'在可能发生错误的语句之前执行代码
出错时继续下一步
打开“aMissingFile.txt”输入为#1
如果错误号为0,则
MsgBox(“缺少aMissingFile.txt”)
LoadFile=False
退出功能
如果结束
On错误转到LoadFile\u错误
'代码的其余部分
LoadFile=True
退出功能
加载文件\u错误:
写日志错误号,错误描述
MsgBox(“程序遇到错误。”)
LoadFile=False
端函数

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

您的问题似乎缺乏详细信息,请在问题中添加一些措辞。请看一看,然后用我编辑并试图更好地解释的特定问题来框定您的问题。@user,我认为这些信息不会暴露于脚本本身。显然,脚本引擎知道当前的错误处理模式,但正在运行的脚本对此并不了解。谢谢!很不错的!这是第二个问题,你澄清了我的问题。我正在学习:)