excel VBA -检测编译失败的方法

yrefmtwq  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(160)

下面的代码:

Public Function Compiler()
    On Error GoTo ErrorHandler

    Compiler = "Successfully Compiled"

    Dim compileMe As Object
    Set compileMe = Application.VBE.CommandBars.FindControl(Type:=msoControlButton, ID:=578)

    If compileMe.Enabled Then
        compileMe.Execute
    End If

    Exit Function

ErrorHandler:

    Compiler = "Unable to Compile - " & Err.Description

End Function

这与posted here的建议非常相似,但它不起作用。如果您在应用程序的其余部分引入错误并运行它,每次都会得到"成功编译"(在单击跳过错误消息后)。
如果文件无法编译,是否有办法让方法返回"无法编译"?

dldeef67

dldeef671#

我的解决方案(返回true/false):

Public Function func_app_compile() As Boolean
   On Error GoTo err_proc
   Dim cmd As Object
   Set cmd = Application.VBE.CommandBars.FindControl(Type:=msoControlButton, id:=578)
   If cmd.Enabled Then cmd.Execute
exit_proc:
   On Error GoTo 0
   DoEvents
   func_app_compile = Not cmd.Enabled
   Exit Function
err_proc:
   Err.Raise vbObjectError - 1000, , "Project failed to compile!"
End Function

然后您可以使用:

If Not func_app_compile Then End

相关问题