sql >> Databasteknik >  >> RDS >> Access

Hur man kontrollerar om en användare klickade på [Avbryt] på en InputBox i VBA

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


  1. NVL2() Funktion i Oracle

  2. GROUP BY och aggregera sekventiella numeriska värden

  3. MySQL Infoga i flera tabeller? (Databasnormalisering?)

  4. Anslut bord från två olika servrar