web-dev-qa-db-fra.com

Comment détecter si l'utilisateur sélectionne annuler InputBox VBA Excel

J'ai un champ de saisie demandant à l'utilisateur d'entrer une date. Comment faire savoir au programme qu'il doit s'arrêter si l'utilisateur clique sur Annuler ou ferme la boîte de dialogue de saisie au lieu d'appuyer sur ok.

Quelque chose comme if str=vbCancel then exit sub

Actuellement, l'utilisateur peut appuyer sur OK ou sur Annuler, mais le programme est toujours exécuté.

str = InputBox(Prompt:="Enter Date MM/DD/YYY", _ Title:="Date Confirmation", Default:=Date) enter image description here

20
user2103670

Si l'utilisateur clique sur Annuler, une chaîne de longueur nulle est renvoyée. Vous ne pouvez pas différencier cela de la saisie d'une chaîne vide. Vous pouvez toutefois créer votre propre classe InputBox personnalisée ...

[~ # ~] éditez [~ # ~] pour différencier correctement la chaîne vide et annuler, conformément à cette réponse .

Votre exemple

Private Sub test()
    Dim result As String
    result = InputBox("Enter Date MM/DD/YYY", "Date Confirmation", Now)
    If StrPtr(result) = 0 Then
        MsgBox ("User canceled!")
    ElseIf value = vbNullString Then
        MsgBox ("User didn't enter anything!")
    Else
        MsgBox ("User entered " & result)
    End If
End Sub

Indique à l'utilisateur qu'il a annulé la suppression de la chaîne par défaut ou qu'il clique sur Annuler.

Voir http://msdn.Microsoft.com/en-us/library/6z0ak68w (v = vs.90) .aspx

29
djv