sql >> Base de Datos >  >> RDS >> Access

Cómo verificar si un usuario hizo clic en [Cancelar] en un cuadro de entrada en VBA

¿Sabía que es posible distinguir entre un usuario que hace clic en "Aceptar" en un cuadro de entrada y "Cancelar", incluso si no ingresó ningún texto?

Considere el siguiente código de ejemplo:

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

Aquí está el código de prueba en acción:

Si está interesado en saber por qué funciona esto, le recomiendo la siguiente pregunta sobre stackoverflow:¿Cuáles son los beneficios y los riesgos de usar StrPtr en VBA? Vale la pena leer las dos respuestas más votadas (de los usuarios Comintern y GSerg) para obtener conocimientos básicos.

Referencias externas

Función InputBox (Visual Basic para aplicaciones)Microsoft Docso365devx¿Cuáles son los beneficios y los riesgos de usar la función StrPtr en VBA?Mientras buscaba una forma de probar cuándo un usuario cancela un InputBox, me topé con la función StrPtr. Creo que verifica si alguna vez se le asignó un valor a una variable y devuelve cero si nunca se le asignó Desbordamiento de pilaChrisB