【Excel VBA】InputBox関数でのキャンセル処理

今までVBAを避けてきました(毛嫌い)が、最近業務改善という名の元、Excelでいろいろ作ってます。
ということで、小ネタです。


InputBox関数で利用者へ入力を求めた場合、[キャンセル]ボタンをクリックすると、受取データは''(空)になるので、
キャンセル処理を以下のようにします。

Sub Cancel()
    Dim inputData As String

    inputData = InputBox("データを入力してください。")

    If inputData = '' Then
        MsgBox "キャンセルされました"
        Exit Sub
    Else
        MsgBox "データが入力されました。"
    End If
End Sub


ところが、上記のコードだと入力ダイアログに何も入力せずに[OK]ボタンをクリックしても、条件式でTrueと評価されてしまいます。
この場合は、StrPtr関数を使用することで、正しくキャンセル処理が行えます。

Sub Cancel()
    Dim inputData As String

    inputData = InputBox("データを入力してください。")

    If StrPtr(inputData) = 0 Then
        MsgBox "キャンセルされました"
        Exit Sub
    Else
        MsgBox "データが入力されました。"
    End If
End Sub


当たり前なテクニックだとは思いますが、VBA初心者の私には「へぇ〜」と思うような関数でした。