Czy wiesz, że można odróżnić użytkownika klikającego „OK” w polu wprowadzania od „Anuluj”, nawet jeśli nie wprowadził żadnego tekstu?
Rozważ następujący przykładowy kod:
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
Oto kod testowy w akcji:
Jeśli interesuje Cię, dlaczego to działa, polecam następujące pytanie dotyczące stackoverflow:Jakie są korzyści i zagrożenia związane z używaniem StrPtr w VBA? Obie odpowiedzi, które otrzymały najwięcej głosów (od użytkowników Cominternu i GSerg) są warte przeczytania, aby uzyskać podstawową wiedzę.
Odniesienia zewnętrzne
Funkcja InputBox (Visual Basic for Applications)Microsoft Docso365devxJakie są korzyści i zagrożenia związane z używaniem funkcji StrPtr w VBA? Szukając sposobu na przetestowanie, gdy użytkownik anuluje InputBox, natknąłem się na funkcję StrPtr. Uważam, że sprawdza, czy zmienna kiedykolwiek miała przypisaną wartość i zwraca zero, jeśli nigdy jej nie było Przepełnienie stosuChrisB