访问 VBA 代码组合不起作用,退出子程序有问题?

访问 VBA 代码组合不起作用,退出子程序有问题?

我对 VBA 还很陌生,似乎无法解决这个问题。这似乎应该是一个很容易解决的问题,但我不知道该怎么做。

那么代码的作用是什么:主表单中有一条记录。按下表单上的按钮后,该记录将被复制到另一个表中。在复制开始之前,代码首先检查子表单中是否已填写“OMnummer”。如果没有,则会出现一个消息框,提示用户应填写子表单,并且代码停止运行。

其次,代码检查该记录是否已存在于另一个表中。如果是,则会出现一个消息框,并且不会复制该记录。如果不是,则记录将被复制到另一个表中。

两段代码单独运行正常。但是,当我尝试将两段代码包含在同一个私有子程序中时,只有第一段代码有效。这可能是“退出子程序”代码的问题,或者我没有使用 If - Then 语句。

希望你能帮助我!莫妮卡

Private Sub KnopProjectVersturen_Click()
On Error GoTo ErrProc

If IsNull(Me!Subform_OMnummers.Form!Omnr) Then
 If MsgBox("Vul het OMnummer in. Je kan het project niet exporteren zonder OMnummer.")     Then
      Exit Sub


   DoCmd.OpenQuery "Qry_Depo_ControleAanwezig"
 If DCount("Deponering.projectnummer", "Qry_Depo_ControleAanwezig") = 0 Then
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "Qry_projectnaarDepot"
         DoCmd.OpenQuery "Qry_ToevoegProjectDepot"
        DoCmd.OpenForm "Depot_uitvoer", , , "[Projectnummer] = '" & Me![Projectnummer] & "' And [subID]=[subID]"
    Me.Status = 8
    DoCmd.Close acQuery, ("Qry_Depo_ControleAanwezig")
    DoCmd.SetWarnings True

Else
        MsgBox "Dit project bestaat al in de Depot_Uitvoer, verander de status in het projectformulier", vbInformation, "Example"
        DoCmd.Close acQuery, ("Qry_Depo_ControleAanwezig")



 End If
 End If
 End If



'Als er fouten zijn laat deze code een messagebox zien met het nummer en de melding.
 ExitProc:
 Exit Sub
 ErrProc:
    Select Case Err.Number
    Case Else
        MsgBox Err.Number & "--" & Err.Description
        Resume ExitProc
        End Select
End Sub

答案1

if消息框中没有该公式的条件。试试这个-

If IsNull(Me!Subform_OMnummers.Form!Omnr) Then
 if msgbox("foo",vbAbort,"error") = 3 then
 exit sub
 end if
end if

或者,不要使用if消息框行

If IsNull(Me!Subform_OMnummers.Form!Omnr) Then
 MsgBox("Vul het OMnummer in. Je kan het project niet exporteren zonder OMnummer.")
 Exit Sub
end if

答案2

不太确定...但你可以尝试一下...

Private Sub KnopProjectVersturen_Click()
On Error GoTo ErrProc


'This is the first part of the code checking if the subform has been filled in

If IsNull(Me!Subform_OMnummers.Form!Omnr) Then
  MsgBox("Vul het OMnummer in. Je kan het project niet exporteren zonder OMnummer.")
  Exit Sub
End If    


'This is the second part of the code, checking if the record exists in the other table and then copying part of the record

DoCmd.OpenQuery "Qry_Depo_ControleAanwezig"
If DCount("Deponering.projectnummer", "Qry_Depo_ControleAanwezig") = 0 Then
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "Qry_projectnaarDepot"
    DoCmd.OpenQuery "Qry_ToevoegProjectDepot"
    DoCmd.OpenForm "Depot_uitvoer", , , "[Projectnummer] = '" & Me![Projectnummer] & "' And [subID]=[subID]"
    Me.Status = 8
    DoCmd.Close acQuery, ("Qry_Depo_ControleAanwezig")
    DoCmd.SetWarnings True

Else
    MsgBox "Dit project bestaat al in de Depot_Uitvoer, verander de status in het projectformulier", vbInformation, "Example"
    DoCmd.Close acQuery, ("Qry_Depo_ControleAanwezig")

End If    


'Als er fouten zijn laat deze code een messagebox zien met het nummer en de melding.
 ExitProc:
 Exit Sub
 ErrProc:
 Select Case Err.Number
 Case Else
    MsgBox Err.Number & "--" & Err.Description
    Resume ExitProc
    End Select
 End Sub

相关内容