【EXCEL VBA】InputBoxで未入力とキャンセルを区別したい

InputBoxで未入力とキャンセルを区別する方法を紹介します。未入力時は文字を入力するように促す、キャンセル時は何もしない時に利用できるのではないかと思います。

未入力判定にはStrPtr関数を使います。StrPtr関数を理解するのは結構難しいので、まずはこのようなものだとして、利用するのがよいと思います。詳しく内容を知りたい方は、こちらの記事が参考になります。

サンプルプログラム

Option Explicit

Sub sample()

    Dim s
    s = InputBox("文字を入力してください", "タイトル")
    
    If StrPtr(s) = 0 Then
        MsgBox "キャンセルが押されました"
    ElseIf s = "" Then
        MsgBox "何も入力されていません"
    Else
        MsgBox s & "が入力されました"
    End If
   
End Sub

すこし続きます。実はApplication.InputBoxというものもあります。こちらのサンプルプログラムを記載します。コード的には、こちらの方がしっくりくるかもしれませんね。

サンプルプログラム2

Option Explicit

Sub sample()

    Dim s
    s = Application.InputBox("文字を入力してください", "タイトル")
    
    If s = False Then
        MsgBox "キャンセルが押されました"
    ElseIf s = "" Then
        MsgBox "何も入力されていません"
    Else
        MsgBox s & "が入力されました"
    End If
   
End Sub