VBA错误退出调用函数

我有一个简单的Excel函数连接到数据库并检索一些数据和填充工作表。 该函数调用另一个函数来build立数据库连接并返回查询结果。 如果连接到数据库时出现错误,如何退出调用函数? 这是我的function看起来像连接到数据库。 如果连接到数据库时出现错误,则会显示消息框,但是随后在调用函数中继续处理,然后出现一个难看的“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 

 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 

你可能想要在调用子句中处理你的错误,因为错误会“冒泡”给调用者。 这将导致您的macros即使您在QueryDB中有一个error handling程序进行debugging。

这里是一个如何处理被调用函数错误的例子

 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 

必要时使用“ exit sub ”命令。 因为你没有分享你的子程序/函数,所以我不能指出它需要给的地方。 根据你的逻辑添加“ 退出子 ”。

问候,

多米尼克

可以使用Global levelvariables来完成,如下所示:

 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