1. 概要
InputBox
関数は、ユーザーから簡単な文字列入力を受け取るための組み込み関数 です。 Excel VBAだけでなく、AccessやWordなど他のOfficeアプリケーションでも利用可能です。
プログラムの処理中にユーザーに値を入力させたい場合に使われ、例えばファイル名や設定値、数値などの入力受付によく用いられます。
2. 基本的な構文
result = InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
引数名 説明 省略可否 prompt 表示するメッセージ(ユーザーへの入力案内) 必須 title ダイアログボックスのタイトルバーに表示する文字列 省略可 default 入力欄にあらかじめ表示する初期値 省略可 xpos ダイアログの表示位置(画面左端からのX座標、ピクセル単位) 省略可 ypos ダイアログの表示位置(画面上端からのY座標、ピクセル単位) 省略可 helpfile ヘルプファイルのパス(ほとんど使わない) 省略可 context ヘルプコンテキストID(ほとんど使わない) 省略可
3. 戻り値
ユーザーが入力した文字列 を返します。
ユーザーが「キャンセル」を押した場合は、空文字列 (""
) が返されます。
4. 基本的な使用例
Sub SampleInputBox() Dim userInput As String userInput = InputBox("名前を入力してください。", "入力フォーム", "山田太郎") If userInput = "" Then MsgBox "キャンセルされました。" Else MsgBox "こんにちは、" & userInput & "さん!" End If End Sub
「名前を入力してください。」というメッセージを表示し、初期値「山田太郎」をセット。
入力された値を使って挨拶メッセージを表示。
キャンセルされた場合はキャンセルメッセージ。
5. prompt引数について
ユーザーに表示する案内文です。
長すぎる文章は読みづらいため、短く簡潔にすることが推奨されます。
複数行にしたい場合は改行コード vbCrLf
を使えます。
nputBox "ファイル名を入力してください。" & vbCrLf & "拡張子は不要です。"
6. title引数について
メッセージボックスの上部に表示されるタイトルバーの文字列です。
省略時は「Microsoft Excel」などアプリ名が既定で表示されます。
ユーザーに入力内容の意味を示すため適切に設定するのが望ましいです。
7. default引数について
入力ボックスのテキストフィールドにあらかじめ表示される初期値です。
ユーザーの入力負担を減らす、ヒントを与えるために活用できます。
8. xpos と ypos 引数について
ダイアログの画面上の表示位置をピクセル単位で指定できます。
省略するとWindows側が自動的に中央配置します。
通常は指定しなくて問題ありませんが、複数のダイアログを出す際に位置をずらしたい場合に利用可能。
9. 入力値の処理例
InputBox
は必ず文字列を返すため、数値や日付などに変換したい場合は明示的に変換処理を行います。
Dim userAge As String Dim age As Integer userAge = InputBox("年齢を入力してください。", "入力") If IsNumeric(userAge) Then age = CInt(userAge) MsgBox "あなたの年齢は " & age & "歳です。" ElseIf userAge = "" Then MsgBox "キャンセルされました。" Else MsgBox "数値を入力してください。" End If
10. Cancelボタンの判定
InputBox
ではキャンセルボタンが押された場合、空文字列 (""
) が返る仕様です。
空文字列はユーザーが空入力した場合とも区別できません。
そのため空入力とキャンセルを区別したい場合はユーザーフォームなどを使う必要があります。
11. 応用例:ファイル名入力とチェック
Sub GetFileName() Dim fileName As String Do fileName = InputBox("保存するファイル名を入力してください。", "ファイル名入力", "Report1") If fileName = "" Then MsgBox "入力がキャンセルされました。" Exit Sub ElseIf InStr(fileName, "\") > 0 Or InStr(fileName, "/") > 0 Then MsgBox "ファイル名に不正な文字が含まれています。再入力してください。" Else Exit Do End If Loop MsgBox "保存ファイル名は " & fileName & " です。" End Sub
ファイル名の入力を求め、不正文字チェックをしてループで再入力促進。
キャンセル時は処理終了。
12. InputBoxとMsgBoxの違い
項目 InputBox MsgBox 主な用途 ユーザーからのテキスト入力取得 メッセージ表示と選択肢入力 戻り値 ユーザーが入力した文字列 ユーザーが押したボタンの定数 ボタン OK、キャンセル(文字入力用) 複数ボタン選択可能(OK, Cancel等) 入力形式 テキストのみ なし
13. InputBoxの種類
VBA標準のInputBox
(今回説明のもの)
Excel VBAにはApplication.InputBox
という別の関数も存在し、こちらは返り値の型を指定できるなど機能が強化されています。
Dim val As Variant val = Application.InputBox("セルを選択してください。", Type:=8) ' Type=8はRange型
14. Application.InputBoxとの違い
項目 InputBox Application.InputBox 戻り値 文字列 Variant(型を指定可能) 入力内容 テキスト テキスト、数値、セル範囲など対応 キャンセル判定 空文字列(””) False(論理型) 機能 シンプルな入力 型指定、セル範囲選択等が可能
15. まとめ
項目 内容 用途 ユーザーから簡単な文字列入力を受け取る 戻り値 入力文字列(キャンセル時は空文字列) 主な引数 prompt(メッセージ)、title(タイトル)、default(初期値) キャンセル判定 空文字列(””)で判定 注意点 空入力とキャンセルの区別不可、複雑な入力にはUserForm推奨 類似関数 Application.InputBox(型指定・範囲選択可)