访问vba块时不应该执行

时间:2011-07-29 16:44:06

标签: database ms-access vba access-vba

我有一个子程序,当我单击表单上的按钮时会运行该子程序。问题是无论发生什么,都会执行错误块,我无法弄清楚原因。我对Access VBA不是很了解,所以这可能是一个简单的错误。

这是我的潜艇:

Public Sub findRecord()

    Dim rs As DAO.Recordset

    Set rs = Me.[dbo_NCL_SimmonsCodes subform1].Form.Recordset

    rs.FindFirst "NCL_ItemNum=""LSIM-" & Me.Text0 & """"

    If rs.NoMatch Then

         MsgBox "No match found.  Please try again." & vbNewLine & vbNewLine & "If this is a new item, please click the Add Record button to add.", vbInformation, "No Match"

    End If

On Error GoTo description_Error

    Me.lblDescription.Caption = DLookup("Description", "dbo_AL_ItemUPCs", "ItemCode ='" & Me.Text0 & "'")

Exit_FindRecord:
    Exit Sub

description_Error:

        MsgBox "Error " & Err.Number & ": " & Err.Description & vbNewLine & vbNewLine, vbExclamation, "VBA Error " & Err.Number
        Me.lblDescription.Caption = "Error."
        Resume Exit_FindRecord

End Sub

2 个答案:

答案 0 :(得分:1)

确实这是一种奇怪的行为。

我建议你将VBA中的错误陷阱行为从“打破无误错误”更改为“打破所有错误”,看看是否还有其他问题引发错误。

要特别检查问题所在的另一件事是切片代码。我的第一个建议是删除Caption更改行并重新运行sub以检查行为是否仍在发生。

此外,确保整个项目正在编译。如果没有,VBA很容易出现奇怪的行为。

更改它,让我们知道发生了什么......我看不出任何明显错误的代码。

答案 1 :(得分:0)

实际上看起来像是一个逻辑错误。如果FindFirst语句没有匹配,则例程应该从那里退出,而不是继续。我在该消息框下方添加了“Exit Sub”,现在我很好。

Public Sub findRecord()

    Dim rs As DAO.Recordset

    Set rs = Me.[dbo_NCL_SimmonsCodes subform1].Form.Recordset

    rs.FindFirst "NCL_ItemNum=""LSIM-" & Me.Text0 & """"

        If rs.NoMatch Then
                MsgBox "No match found.  Please try again." & vbNewLine & vbNewLine & "If this is a new item, please click the Add Record button to add.", vbInformation, "No Match"
                Me.lblDescription.Caption = "Error - No match."
                Exit Sub      
                '^^Added^^'
        End If

On Error GoTo description_Error

            Me.lblDescription.Caption = DLookup("Description", "dbo_AL_ItemUPCs", "ItemCode ='" & Me.Text0 & "'")

Exit_FindRecord:
        Exit Sub

description_Error:
        MsgBox "Error " & Err.Number & ": " & Err.Description & vbNewLine & vbNewLine, vbExclamation, "VBA Error " & Err.Number
        Me.lblDescription.Caption = "Error."
        Resume Exit_FindRecord

End Sub