Access
 sql >> Base de données >  >> RDS >> Access

Comment vérifier si un utilisateur a cliqué sur [Annuler] sur une InputBox dans VBA

Saviez-vous qu'il est possible de faire la distinction entre un utilisateur cliquant sur "OK" sur une InputBox et "Annuler", même s'il n'a saisi aucun texte ?

Considérez l'exemple de code suivant :

Sub InputBoxTest()
    Dim Result As String
    
    Result = InputBox("Leave this box blank")
    If StrPtr(Result) = 0 Then
        Debug.Print "User clicked [Cancel]"
    ElseIf Len(Result) = 0 Then
        Debug.Print "User clicked [OK]"
    Else
        Debug.Print "User can't follow instructions"
    End If
    
End Sub

Voici le code de test en action :

Si vous souhaitez savoir pourquoi cela fonctionne, je vous recommande la question suivante sur stackoverflow :Quels sont les avantages et les risques de l'utilisation de StrPtr dans VBA ? Les deux réponses les plus votées (des utilisateurs Komintern et GSerg) valent la peine d'être lues pour des connaissances de base.

Références externes

Fonction InputBox (Visual Basic pour Applications)Microsoft Docso365devxQuels sont les avantages et les risques de l'utilisation de la fonction StrPtr dans VBA ?En cherchant un moyen de tester lorsqu'un utilisateur annule une InputBox, je suis tombé sur la fonction StrPtr. Je crois qu'il vérifie si une variable a déjà reçu une valeur et renvoie zéro si elle ne l'a jamais été Débordement de pileChrisB