Microsoft Access VBA - 有没有办法创建处理特定错误代码的公共子?

时间:2016-04-11 12:42:32

标签: vba ms-access error-handling

是否可以创建处理特定错误代码的公共子?我的表单上有多个文本字段和更新按钮,用于将某些表中的文本替换为文本框中的字符串。

但是,如果文本框中的字符串包含撇号,则会给出错误代码“3075”。我不想为每个sub写一个错误处理程序;是否可以创建一个公共子并在遇到错误3075时调用它?

E.G--这是public sub的样子:

Public Sub ErrHandler()
If Err.Number = 3075 Then
MsgBox("You can't use apostrophes in the text box")
End If
End Sub

然后这样的东西会出现在每个带有文本框的子中:

On Error Call ErrHandler

我已经尝试了上面的代码,它不起作用。只是想知道是否有人对此有任何其他想法或解决方法?

修改

以下是更新按钮的代码。它用列表框('txtTele'和'txtDescription;)中的字符串替换列表框(TelephoneList)中的选定项目

列表框显示“LPA电话”表中的项目。

Private Sub UpdateTelephoneButton_Click()
If Not IsNull(txtTele) And Not IsNull(TelephoneList.Column(0)) Then
    CurrentDb.Execute "UPDATE [LPA Telephone] " & _
    "SET [Telephone] = '" & Me.txtTele & "'" & _
    ", [Description] = '" & Me.txtDescription & "'" & _
    "WHERE [ID] = " & Int(TelephoneList.Column(0)) & ""

    TelephoneList.Requery
End If
End Sub

1 个答案:

答案 0 :(得分:0)

另一种标准方法是继承 错误对象,如下所示:

(在全球模块中)

Public Err As ErrObject

(启动时)

Set Err = New ErrObject

我在网上找到的一个例子是书Advanced Microsoft Visual Basic中给出的。我不会重复全文:类ErrObject像这样开始:

Private e() As ErrObjectState

Private Type ErrObjectState
 Description As String
 HelpContext As Long
 HelpFile As String
 Number As Long
End Type

Public Property Get Description() As String
 Description = VBA.Err.Description
End Property