一般错误处理程序:如果 UserForm 中除 msgBox 之外有任何错误:Err.Description

问题描述 投票:0回答:1

一旦我的代码出现错误,我想要打开一个消息框。我故意在代码中构建了错误,但未出现消息框,而是打开了 MicroSoft Visual Basic for Applications。

如何让我的消息框出现?另外,我怎样才能使用完整用户表单的查询?有 UserForm_Error 函数,但它是这个意思吗?

故意的错误是没有DataBaseTest,我想触发这个错误:

错误:变量未定义

Private Sub ConnectCheck()
    ' Versuchen, eine Verbindung zur Datenbank herzustellen
    On Error GoTo ErrorHandler
    Dim connStr As String
    connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathDB & ";Jet OLEDB:DatabaseTest Password=" & PasswordDB & ";" 'no DatabaseTest intentionally entered a mistake
    
    Dim conn As Object
    Set conn = CreateObject("ADODB.Connection")
    

    conn.Open connStr

    
    If conn.State = 1 Then
        ' Verbunden
        LabelConnect.Caption = "Connected"
        LabelConnect.Font = RGB(0, 255, 0)
    Else

'        LabelConnect.Caption = "Not Connected"
'        LabelConnect.Font = RGB(255, 0, 0)
    End If
    

    conn.Close
    Set conn = Nothing
    Exit Sub
ErrorHandler:
    MsgBox "Error: " & Err.Description
    

End Sub
excel vba userform
1个回答
0
投票

看起来您可能指的是编译时错误。但是,

On Error
语句仅处理运行时错误。因此,您应该在尝试运行代码之前手动编译代码。这样您就可以在运行时避免编译时错误。

首先,确保在任何过程之前在模块的最顶部有以下语句。这将迫使您声明所有变量。因此,如果您尝试使用未声明的变量,您将收到编译时错误。

Option Explicit

然后手动编译代码,并修复弹出的任何错误。一旦修复了任何错误并保存了工作簿,弹出的任何错误都将在运行时发生,您的

On Error
语句将捕获这些错误。

Visual Basic Editor (Alt+F11) >> Debug >> Compile VBAProject
© www.soinside.com 2019 - 2024. All rights reserved.