Sapevi che è possibile distinguere tra un utente che fa clic su "OK" su un InputBox e "Annulla", anche se non ha inserito alcun testo?
Considera il seguente codice di esempio:
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
Ecco il codice di prova in azione:
Se sei interessato al motivo per cui funziona, ti consiglio la seguente domanda su StackOverflow:quali sono i vantaggi e i rischi dell'utilizzo di StrPtr in VBA? Vale la pena leggere entrambe le risposte più votate (dagli utenti Comintern e GSerg) per una conoscenza di base.
Riferimenti esterni
Funzione InputBox (Visual Basic for Applications)Microsoft Docso365devxQuali sono i vantaggi ei rischi dell'utilizzo della funzione StrPtr in VBA? Durante la ricerca di un modo per verificare quando un utente annulla un InputBox, mi sono imbattuto nella funzione StrPtr. Credo che controlli se a una variabile è mai stato assegnato un valore e restituisce zero se non lo è mai stato Stack OverflowChrisB