尝试在 Excel VBA 中使用 Try-Catch 块来获取内部异常时出错

Jim*_*ert 3 excel vba exception try-catch

我正在使用 excel 和 VBA。我试图从自动化异常中获取内部异常,但首先我需要让 try catch 块工作。看起来我已经完全复制了微软文档中的语法。这是代码:

Try
    Set sm = CreateObject("SpectrumManager.Application")
Catch ex As Exception
    MsgBox ("Can't Create Object") 'placeholder
    'I want to get the inner exception from ex here
End Try
Run Code Online (Sandbox Code Playgroud)

End Try 处的错误消息是这样的:“预期:如果或 Select 或 Sub 或函数或属性或类型或 With 或 Enum 或语句结束” Catch 处的错误消息是这样的:“预期:语句结束”

我究竟做错了什么?我在这里先向您的帮助表示感谢。编辑:我现在意识到 vba 不支持 try-catch 块。这引出了我的问题,有没有办法从发送的原始异常中获取内部异常?或者该信息在转换为 vba 错误时会丢失吗?

QHa*_*arr 8

VBA 不支持 Try Catch。您可以使用错误处理或更简单的方式

On Error Resume Next
Set sm = CreateObject("SpectrumManager.Application")
On Error GoTo 0
If sm Is Nothing Then
    MsgBox "Can't Create Object"
End If
Run Code Online (Sandbox Code Playgroud)

一个简单的错误处理例程可能如下所示:

Public Sub test()
    Dim sm As Object
    On Error GoTo errhand
    Set sm = CreateObject("SpectrumManager.Application")
    'other code
    Exit Sub
errhand:
    Select Case Err.Number
    Case 429
        MsgBox "Can't Create Object"
        'Case... other errors
    End Select
End Sub
Run Code Online (Sandbox Code Playgroud)