Visste du att det är möjligt att skilja mellan en användare som klickar på "OK" på en InputBox och "Avbryt", även om de inte skrivit in någon text?
Tänk på följande exempelkod:
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
Här är testkoden i aktion:
Om du är intresserad av varför detta fungerar rekommenderar jag följande fråga om stackoverflow:Vilka är fördelarna och riskerna med att använda StrPtr i VBA? Båda toppröstade svaren (från användare Comintern och GSerg) är värda att läsa för bakgrundskunskap.
Externa referenser
InputBox-funktion (Visual Basic för applikationer)Microsoft Docso365devxVilka är fördelarna och riskerna med att använda StrPtr-funktionen i VBA? När jag letade efter ett sätt att testa när en användare avbryter en InputBox, snubblade jag över StrPtr-funktionen. Jag tror att den kontrollerar om en variabel någonsin tilldelats ett värde och returnerar noll om den aldrig var det Stack OverflowChrisB