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