我有一个简单的excel函数,它连接到db并检索一些数据并填充工作表。该函数调用另一个函数来建立数据库连接并返回查询结果。如果连接到数据库时出错,如何退出调用函数?这就是我的函数看起来连接到数据库的样子。如果连接到DB时出错,则会显示消息框,但随后在调用函数中继续处理,然后我收到一个丑陋的“END或DEBUG”消息框...我试图避免这种情况。
Public Function QueryDB(sQuery As String)
On Error GoTo ErrorHandler
... Connect to database and get data
ErrorHandler:
... Display a messagebox telling the user there is an error
'Resume Next
Exit Function
End Function
答案 0 :(得分:3)
Public Function QueryDB(sQuery As String)
On Error GoTo ErrorHandler
'... Connect to database and get data
' Exit function before the error handler so
' it doesn't get processed every run
Exit Function
ErrorHandler:
' ... Display a messagebox telling the user there is an error
MsgBox "Oops! An error occurred."
End Function
您可能希望在调用子中处理错误,因为错误会“冒泡”到调用者。即使在QueryDB中有错误处理程序,这也会导致宏进行调试。
以下是如何处理被调用函数中的错误的示例
Sub Main()
On Error GoTo DBERROR
QueryDB ("Query String")
On Error GoTo 0
Exit Sub
DBERROR:
MsgBox "Oops! Error " & Err.Number & " occurred in " & Err.Source & ".", _
Title:="Error " & Err.Number
End Sub
Public Function QueryDB(sQuery As String)
Err.Raise 5000, "QueryDB", "Error connecting to DB"
End Function
答案 1 :(得分:0)
在必要时使用“退出子”命令。因为你没有共享你的子程序/功能,我不能指出它需要给出的位置。根据您的逻辑添加“退出子”。
此致
星
答案 2 :(得分:0)
可以使用全局级变量完成,如下所示:
Public dbError as Integer
Function ConnectToDb as Integer
On Error GoTo err_Connection
'Asume connection to DB failure
err_Connection:
MsgBox "Connection failed to database !! ", vbOKOnly + vbExclamation
dbError = -500 'Any number
Exit Function
End Function
Sub MainSub
'Call function
ConnectToDb
If dbError = -500 Then
Exit Sub
End If
End Sub