InputBox関数

InputBox 関数はマクロ実行中にダイアログボックスを画面に表示し、ユーザーからの入力を受け付けます。ダイアログボックス上の何かしらボタンを押下することで、入力されたデータを返却します。但し、ダイアログボックス右上の × ボタンまたは キャンセル ボタンを押下すると値0の文字列を返却します。

値0の文字列と長さ0の文字列””は異なります。しかし if 文や StrComp などで比較すると同じという判定結果が返ってきます。このため、値0の文字列を判定するには StrPtr という非公式の関数を使用します。この関数は文字列が格納されているアドレスを返すもので、値0の文字列の場合は”0″を返し、これ以外の場合は”0″以外を返します。

スポンサーリンク

InputBox関数の使用方法

構文
InputBox(Prompt [, Title] [, Default] [, XPos] [, YPos] [, HelpFile] [, Context])

【戻り値】 文字列型 (String)
引数名 省略 説明
Prompt × 必須入力です。ダイアログ ボックス内にメッセージとして表示する文字列を示す文字列式を指定します。 改行するにはvbCr、vbLf、vbCrLfのいずれかを使用します。
Title ダイアログ ボックスのタイトル バーに表示する文字列式を指定します。 省略すると、タイトル バーにはアプリケーション名が表示されます。
Default テキスト ボックスに既定値として表示する文字列式を指定します。
XPos パソコン画面の左端からダイアログ ボックスの左端までの水平方向の距離を、twip 単位で示す数式を指定します。 省略すると、パソコン画面の中央の位置に配置されます。
YPos パソコン画面の上端からダイアログ ボックスの上端までの垂直方向の距離を、twip 単位で示す数式を指定します。 省略すると、パソコン画面の上端から約 1/3 の位置に配置されます。
HelpFile この引数は、表示するダイアログ ボックスの説明を、ヘルプを使って表示するときに指定します。 使用するヘルプ ファイルの名前を示す文字列式を指定します。 引数 HelpFile を指定した場合は、引数 Context も指定する必要があります。
Context ヘルプ トピックに指定したコンテキスト番号を表す数式を指定します。 引数 Context を指定した場合は、引数 HelpFile も指定する必要があります。

InputBox関数の使用例

引数Prompt、Title、Defaultの表示場所

引数の表示場所を確認する例です。

Sub sample_ef011_01()
    Dim strData    As String

    strData = InputBox("ここが引数Promptです。" & vbLf & "(必須入力)", _
                       "ここが引数Titleです。", _
                       "ここが引数Defaultです。")
End Sub
ダイアログボックスの表示画面
ダイアログボックスの表示画面

デフォルト値の設定

省略可能引数のうち、名前付き引数を使用してDefault値を設定する例です。

Sub sample_ef011_02()
    Dim strData    As String

    strData = InputBox("数値を入力してください。", _
                        Default:=100)
End Sub
名前付き引数を使用した例
名前付き引数を使用した例

入力データによる処理の分岐

入力されたデータにより処理を分岐する例です。

Sub sample_ef011_03()
    Dim strData    As String

    strData = InputBox("値を入力してください。")

    'キャンセルされたかどうかの判断はStrPtr関数で行います。
    If StrPtr(strData) = 0 Then
        'キャンセルボタンか×ボタンが押下された場合
        MsgBox "入力がキャンセルされました。", vbExclamation
    ElseIf strData = "" Then
        '値を入力しないでOKボタンを押下した場合
        MsgBox "値が未入力です。", vbExclamation
    Else
        '値を入力してOKボタンを押下した場合
        MsgBox "入力された値は" & strData & "です。", vbInformation
    End If
End Sub

 MsgBox関数

上記サンプルマクロを実行し、まずは キャンセル ボタンを押してみます。

[キャンセル]または[×]ボタンを押下
[キャンセル]または[×]ボタンを押下

キャンセルした旨のダイアログが表示されました。

入力がキャンセルされました。
入力がキャンセルされました。

再度実行し、次はデータ未入力のまま OK ボタンを押下してみます。

未入力状態で[OK]ボタンを押下
未入力状態で[OK]ボタンを押下

値が入力されていない旨のダイアログが表示されました。

値が未入力です。
値が未入力です。

再々実行し、最後に、値を入力して OK ボタンを押下してみます。

値を入力して[OK]ボタンを押下した場合
値を入力して[OK]ボタンを押下した場合

入力された値が表示されました。

入力された値はabcです。
入力された値はabcです。

 数値入力されるまで繰り返し入力を受け付ける

タイトルとURLをコピーしました