我有一个子程序,当我单击表单上的按钮时会运行该子程序。问题是无论发生什么,都会执行错误块,我无法弄清楚原因。我对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
答案 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