Věděli jste, že je možné rozlišit mezi kliknutím uživatele na „OK“ na InputBox a na „Zrušit“, i když nezadal žádný text?
Zvažte následující ukázkový kód:
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
Zde je testovací kód v akci:
Pokud vás zajímá, proč to funguje, doporučuji následující otázku na stackoverflow:Jaké jsou výhody a rizika používání StrPtr ve VBA? Obě odpovědi s nejvyšším hlasováním (od uživatelů Cominterna a GSerg) stojí za přečtení pro základní znalosti.
Externí reference
Funkce InputBox (Visual Basic for Applications)Microsoft Docso365devx Jaké jsou výhody a rizika používání funkce StrPtr ve VBA? Při hledání způsobu, jak otestovat, když uživatel zruší InputBox, jsem narazil na funkci StrPtr. Věřím, že zkontroluje, zda byla proměnné někdy přiřazena hodnota, a vrátí nulu, pokud nikdy nebyla Stack OverflowChrisB