J'ai ce simple formulaire d'accès qui, lorsque vous remplissez le formulaire et oubliez de renseigner le champ Unité, une boîte de dialogue apparaîtra pour vous en informer et définissez Focus sur cette zone très combinée. Si ce n'est pas null, je veux appeler la fonctionnalité suivante. La première partie de ce code fonctionne, mais si ce n'est pas le cas, il ne peut pas continuer.
Private Sub Image_AddNon_RPS_Button_Click()
If IsNull(Me.BU_Selected_Add) Then
MsgBox "Please Select a Business Unit!", vbOKOnly
Exit Sub
End If
Me.Combo_BU_Selector.SetFocus
Exit Sub
If Not IsNull(Me.BU_Selected_Add) Then
Call Add_RPS_LINE
End If
End Sub
Est-ce que quelqu'un voit où je suis totalement dans le champ gauche?
Vous avez un Exit Sub
supplémentaire (celui après la première MsgBox
) qui empêche votre code de faire ce que vous voulez. De plus, votre premier End If
est au mauvais endroit.
Essayez quelque chose comme ceci à la place:
Private Sub Image_AddNon_RPS_Button_Click()
If IsNull(Me.BU_Selected_Add) Then ' No business unit
MsgBox "Please Select a Business Unit!", vbOKOnly ' Tell user
Me.Combo_BU_Selector.SetFocus ' Focus the control
Exit Sub ' Exit the method
End If ' End the IsNull test
Call Add_RPS_LINE ' You only get here if the above doesn't execute
End Sub
Il est utile d’apprendre à mettre correctement en retrait votre code afin qu’il corresponde If
et End If
visuellement, de sorte que vous puissiez voir où ils se rangent et où ils ne le font pas. :-)
Si vous corrigez l'indentation de votre code pour:
Private Sub Image_AddNon_RPS_Button_Click()
If IsNull(Me.BU_Selected_Add) Then
MsgBox "Please Select a Business Unit!", vbOKOnly
Exit Sub
End If
Me.Combo_BU_Selector.SetFocus
Exit Sub
If Not IsNull(Me.BU_Selected_Add) Then
Call Add_RPS_LINE
End If
End Sub
Vous pouvez clairement voir que le Exit Sub
au milieu mettra fin à la fonction avant qu'elle atteigne Call Add_RPS_LINE
.
Si vous examinez les deux instructions If
que vous avez, vous pouvez constater qu’elles sont presque identiques et qu’un Else
est donc en ordre, ce qui permet d’obtenir ce code plus simple et plus lisible.
Private Sub Image_AddNon_RPS_Button_Click()
If IsNull(Me.BU_Selected_Add) Then
MsgBox "Please Select a Business Unit!", vbOKOnly
Me.Combo_BU_Selector.SetFocus
Else
Call Add_RPS_LINE
End If
End Sub