InputBox関数

 テキストボックス付きのダイアログを表示します。
 ボックスに入力された値を戻り値として受け取ることができます。
 なお通常はVBAで用いますが、フォームのテキストボックスなどのコントロールソースに用いて値を取得することも可能です。

使用例

例1

コード
 単純に入力された値を受け取る例です。

Sub Func_InputBox()

    Dim ans As String

    ans = InputBox("注文を入力してください")

    MsgBox ans & "の注文を承りました"

End Sub

出力
 右の画像は「うどん」と入力してOKを選択したときの表示です。
f:id:accs2014:20190204060122p:plain:left:w400f:id:accs2014:20190204060119p:plain:left:w200

例2

コード
 入力の有無に応じて処理(応答メッセージ)を変える例です。テキストボックスに何も入力せずOKとした場合、InputBox関数は長さ0の文字列を返します。
 また、メッセージを定数vbCrLfで改行しています。さらに第2引数でタイトルを表示し、第3引数で既定値を表示しています。

Sub Func_InputBox()

    Dim ans As String

    ans = InputBox("メニューを入力してください" & vbCrLf & _
                   "おすすめはカレーです", "ご注文をどうぞ", "カレー")

    If ans = "" Then
        MsgBox "注文はなしとします"
    Else
        MsgBox ans & "の注文を承りました"
    End If

End Sub

出力
 右の画像は既定値である「カレー」のままでOKしたときの表示です。
f:id:accs2014:20190204060116p:plain:left:w400f:id:accs2014:20190204060114p:plain:left:w200

例3

コード
 入力値が妥当かどうか(日付かどうか)を判定して処理(応答メッセージ)を変える例です。

Sub Func_InputBox()

    Dim ans As Variant

    ans = InputBox("日付を入力してください(例:2019/1/23)")

    If IsDate(ans) Then
        MsgBox "その日は" & Format(ans, "aaaa") & "です"
    Else
        MsgBox "日付ではありません"
    End If

End Sub

出力
 右の画像は「2019/1/23」と入力してOKしたときの表示です。
f:id:accs2014:20190204060111p:plain:left:w400f:id:accs2014:20190204060150p:plain:left:w200

書式

InputBox(メッセージ[,タイトル,既定値,x座標,y座標,ヘルプファイル,コンテキスト])

 x座標はダイアログが表示される左右の位置を表す座標です。単位はtwipで、画面左端が0にあたります。省略すると左右の中央に表示されます。
 y座標はダイアログが表示される上下の位置を表す座標です。単位はtwipで、画面上端が0にあたります。省略すると上から1/3の位置に表示されます。
 ヘルプファイルはヘルプを設定するときに使用するヘルプファイルを指定する文字列です。同時にコンテキストを指定する必要があります。
 コンテキストはヘルプトピックに該当するコンテキスト番号を指定します。同時にヘルプファイルを指定する必要があります。

備考

キャンセルの検出

 InputBox関数では、ボックスに何も入力せずOKとした場合も、キャンセルを選択した場合も「長さ0の文字列」が返ります。キャンセルされたことを識別する方法が用意されていませんが、StrPtr関数(一般にはガイドされていない関数です)を用いて「StrPtr(戻り値) = 0」という条件でキャンセルされたことを識別できます。
 詳しくは次の記事をご覧ください。

www.accessdbstudy.net

パラメータ入力での利用

 冒頭にも記したようにフォームなどでも利用することはできるほか、次の記事のようにパラメータクエリのパラメータ入力に用いることも可能です。メッセージの改行、タイトル表示、既定値の設定ができ、関数を使えるのがポイントです。

www.accessdbstudy.net