Access
 sql >> Database >  >> RDS >> Access

Come verificare se un utente ha fatto clic su [Annulla] su un InputBox in VBA

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