如何在VBA代码中实现错误处理

时间:2014-07-15 08:46:15

标签: excel vba excel-vba

我有代码从" C10"中获取数据库服务器名称。 excel的单元格,从单元格中获取值后,它连接到服务器,然后执行存储过程。

我的服务器名称在" C10" cell:LE64 \ SQL2012

Option Explicit

Sub Button1_Click()
        Call TS
End Sub

Sub TS()
        'Variable Declaration
        Dim OutPut As Integer
        If MsgBox("Do you want to take the Snapshot?", vbQuestion + vbYesNo, "MS Excel") = vbYes Then
             Dim con          As Connection
             Dim rst          As Recordset
             Dim strConn      As String
             Dim strDatabase  As String
             Dim myRange      As Range
             Dim objWorkbook  As Excel.Workbook
             Dim objWorkSheet As Excel.Worksheet

             Set objWorkSheet = ThisWorkbook.Sheets("MS Excel")
             objWorkSheet.Activate

             Set con = New Connection
             Let strDatabase = objWorkSheet.Range("C10").Value

             strConn = "Provider=SQLOLEDB;"
             strConn = strConn & "Data Source= " & strDatabase & ";"
             strConn = strConn & "Initial Catalog=Warehouse;"
             strConn = strConn & "Integrated Security=SSPI;"
             con.Open strConn
             Set rst = con.Execute("Exec [dbo].[LoadSP]")

             MsgBox "Snapshot successfully taken", vbInformation, "MS Excel"
             con.Close
        End If
End Sub

但是当我更改单元格的值时," C10"略微喜欢" LE64 \ SQL201"它无法连接到服务器并在下面抛出错误:

" SQL Server不存在或访问被拒绝"在消息框中

我想在另一个消息框中处理并显示上述错误,突出显示"无效的数据库名称"如果在从C10单元格中获取值后无法连接到正确的数据库服务器。

我查看了网络上的不同错误处理机制,但无法实现它。

任何人都可以帮我添加一个try catch块到我的代码或任何错误处理机制来处理上述问题。

1 个答案:

答案 0 :(得分:3)

看看这个示例代码..

 Sub MySub()

    On Error GoTo ErrorHandler
    . . .
    Exit Sub

 ErrorHandler:
    . . .
    Resume <or Exit Sub>
    . . .

 End Sub

这是处理错误最简单的方法..

如需更多提前选项,请参阅Source