Access
 sql >> Base de Dados >  >> RDS >> Access

Como verificar se um usuário clicou em [Cancelar] em um InputBox no VBA


Você sabia que é possível distinguir entre um usuário clicando em "OK" em um InputBox versus "Cancelar", mesmo que não tenha digitado nenhum texto?

Considere o seguinte código de exemplo:
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

Aqui está o código de teste em ação:

Se você estiver interessado em saber por que isso funciona, recomendo a seguinte pergunta sobre stackoverflow:Quais são os benefícios e riscos de usar StrPtr no VBA? Vale a pena ler as duas respostas mais votadas (dos usuários Comintern e GSerg) para obter conhecimento prévio.

Referências externas

Função InputBox (Visual Basic for Applications)Microsoft Docso365devxQuais são os benefícios e riscos de usar a função StrPtr no VBA?Enquanto procurava uma maneira de testar quando um usuário cancela um InputBox, me deparei com a função StrPtr. Eu acredito que ele verifica se uma variável já recebeu um valor e retorna zero se nunca foi Stack OverflowChrisB