访问 VBA 子例程后变量似乎没有清除,获取过程声明不匹配

Access VBA variables don't seem to clear after sub routine, getting procedure declaration does not match

我有一个制作团队用来执行评论的数据库。它包含一个问题列表,如果答案是 'No.',大多数问题都需要输入例外。他们目前正在使用组合框完全更新这些字段。我正在尝试对其进行编程,以便在每次回答后,根据该回答始终相同的异常部分不必更新。我首先声明了变量(在子例程中以及在顶部作为 public 变量)。我的想法是,每次他们回答一个问题时,都会为该特定问题声明变量,并且弹出表单会根据这些变量进行填充。我的代码按预期工作,直到我尝试将相同的代码添加到变量已更改的不同问题。有一些变量总是相同的,但我现在还不关心清理它。我的代码如下:

Option Compare Database
Option Explicit
Public LnNum As Long
Public PCID As Long
Public QCID As String
Public Cat As String
Public ExcDesc As String

Private Sub QCSP15_AfterUpdate()

LnNum = Me.Loan_Number.Value
PCID = Me.PreCloseID.Value
QCID = "QCSP15"
Cat = "Preliminary Application"
ExcDesc = "The initial 1003 was not found in the file."

    If Form_frmPreCloseAudit.QCSP15.Value = "No" Then
        DoCmd.OpenForm "frmTestExceptions"
        DoCmd.GoToRecord acDataForm, "frmTestExceptions", acNewRec
        Form_frmTestExceptions.Loan_Number.Value = LnNum
        Form_frmTestExceptions.PreClose_ID.Value = PCID
        Form_frmTestExceptions.QCSPID = QCID
        Form_frmTestExceptions.QCSP_Category.Value = Cat
        Form_frmTestExceptions.Exception_Text.Value = ExcDesc
    Else
        DoCmd.GoToControl "QCSP160"
    End If

End Sub

Private Sub QCSP154_AfterUpdate(Cancel As Integer)

LnNum = Me.Loan_Number.Value
PCID = Me.PreCloseID.Value
QCID = "QCSP154"
Cat = "Preliminary Application"
ExcDesc = "The DocuSign Certificate of Completion for the initial disclosure package was not uploaded to Doc V."      

     If Form_frmPreCloseAudit.QCSP154.Value = "No" Then
        DoCmd.OpenForm "frmTestExceptions"
        DoCmd.GoToRecord acDataForm, "frmTestExceptions", acNewRec
        Form_frmTestExceptions.Loan_Number.Value = LnNum
        Form_frmTestExceptions.PreClose_ID.Value = PCID
        Form_frmTestExceptions.QCSPID = QCID
        Form_frmTestExceptions.QCSP_Category.Value = Cat
        Form_frmTestExceptions.Exception_Text.Value = ExcDesc
     Else
        DoCmd.GoToControl "QCSP161"
     End If
End Sub

一旦我为下一个问题添加了第二个 'After Update' 子过程,我就得到了过程声明不匹配的错误。我曾尝试将变量命名为不同的东西,但似乎没有任何效果,而且这可能超出了我作为新手的理解能力。

Cancel As Integer 不支持 更新后 事件。从声明中删除它:

'Private Sub QCSP154_AfterUpdate(Cancel As Integer)
Private Sub QCSP154_AfterUpdate()

通过让 Access 从事件过程的代码存根开始,可以避免将来出现该问题。在 属性 sheet 的 Event 选项卡中执行此操作。找到您想要的事件,然后单击相邻输入框最右侧的三点图标。