A combinação de código do Acces VBA não está funcionando, problema com exit sub? [fechadas]

0

Sou muito novo no VBA e não consigo resolver este problema. Parece que deveria ser um problema fácil de consertar, só não sei como.

Então, o que o código faz: Na forma principal é um registro. Este registro será copiado para outra tabela bij pressionando um botão no formulário. Antes do início da cópia, o código verifica primeiro se o 'OMnummer' foi preenchido no subformulário. Caso contrário, será exibida uma caixa de mensagem informando que o usuário deve preencher o subformulário e o código será interrompido.

Em segundo lugar, o código verifica se o registro já está presente na outra tabela. Nesse caso, uma caixa de mensagem aparece e o registro não será copiado. Caso contrário, o registro será copiado para a outra tabela.

Ambos os códigos funcionam bem em separado. No entanto, quando tento incluir as duas partes no mesmo sub particular, apenas o primeiro funciona. Pode ser algo com o código 'Exit Sub' ou não estou usando o botão If - Then right.

Espero que você possa me ajudar! Monika

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
    
por Monika 24.07.2013 / 11:14

2 respostas

0

Não há condição para a fórmula if com a caixa de mensagem. Experimente -

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

Ou não use o if na linha da caixa de mensagem

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
    
por 24.07.2013 / 12:04
1

Não tenho certeza .. mas você pode tentar isso ...

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
    
por 24.07.2013 / 12:28