テキストボックス付きのダイアログを表示します。
ボックスに入力された値を戻り値として受け取ることができます。
なお通常はVBAで用いますが、フォームのテキストボックスなどのコントロールソースに用いて値を取得することも可能です。
使用例
例1
コード
単純に入力された値を受け取る例です。
Sub Func_InputBox() Dim ans As String ans = InputBox("注文を入力してください") MsgBox ans & "の注文を承りました" End Sub
出力
右の画像は「うどん」と入力してOKを選択したときの表示です。
例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したときの表示です。
例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したときの表示です。
書式
InputBox(メッセージ[,タイトル,既定値,x座標,y座標,ヘルプファイル,コンテキスト])
x座標はダイアログが表示される左右の位置を表す座標です。単位はtwipで、画面左端が0にあたります。省略すると左右の中央に表示されます。
y座標はダイアログが表示される上下の位置を表す座標です。単位はtwipで、画面上端が0にあたります。省略すると上から1/3の位置に表示されます。
ヘルプファイルはヘルプを設定するときに使用するヘルプファイルを指定する文字列です。同時にコンテキストを指定する必要があります。
コンテキストはヘルプトピックに該当するコンテキスト番号を指定します。同時にヘルプファイルを指定する必要があります。
備考
キャンセルの検出
InputBox関数では、ボックスに何も入力せずOKとした場合も、キャンセルを選択した場合も「長さ0の文字列」が返ります。キャンセルされたことを識別する方法が用意されていませんが、StrPtr関数(一般にはガイドされていない関数です)を用いて「StrPtr(戻り値) = 0」という条件でキャンセルされたことを識別できます。
詳しくは次の記事をご覧ください。
パラメータ入力での利用
冒頭にも記したようにフォームなどでも利用することはできるほか、次の記事のようにパラメータクエリのパラメータ入力に用いることも可能です。メッセージの改行、タイトル表示、既定値の設定ができ、関数を使えるのがポイントです。