InputBox 組込関数

関数

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の違い

項目InputBoxMsgBox
主な用途ユーザーからのテキスト入力取得メッセージ表示と選択肢入力
戻り値ユーザーが入力した文字列ユーザーが押したボタンの定数
ボタン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との違い

項目InputBoxApplication.InputBox
戻り値文字列Variant(型を指定可能)
入力内容テキストテキスト、数値、セル範囲など対応
キャンセル判定空文字列(””)False(論理型)
機能シンプルな入力型指定、セル範囲選択等が可能

15. まとめ

項目内容
用途ユーザーから簡単な文字列入力を受け取る
戻り値入力文字列(キャンセル時は空文字列)
主な引数prompt(メッセージ)、title(タイトル)、default(初期値)
キャンセル判定空文字列(””)で判定
注意点空入力とキャンセルの区別不可、複雑な入力にはUserForm推奨
類似関数Application.InputBox(型指定・範囲選択可)
タイトルとURLをコピーしました