Vidste du, at det er muligt at skelne mellem en bruger, der klikker på "OK" på en InputBox og "Annuller", selvom de ikke har indtastet nogen tekst?
Overvej følgende eksempelkode:
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
Her er testkoden i aktion:
Hvis du er interesseret i, hvorfor dette virker, anbefaler jeg følgende spørgsmål om stackoverflow:Hvad er fordelene og risiciene ved at bruge StrPtr i VBA? Begge top-stemte svar (fra brugere Comintern og GSerg) er værd at læse for baggrundsviden.
Eksterne referencer
InputBox-funktion (Visual Basic for Applications)Microsoft Docso365devxHvad er fordelene og risiciene ved at bruge StrPtr-funktionen i VBA? Mens jeg ledte efter en måde at teste, hvornår en bruger annullerer en InputBox, faldt jeg over StrPtr-funktionen. Jeg tror, den kontrollerer, om en variabel nogensinde er blevet tildelt en værdi, og returnerer nul, hvis den aldrig blev tildelt Stack OverflowChrisB