VBA入門
InputBoxメソッド(インプットボックス)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
公開日:2013年5月以前 最終更新日:2021-11-19

第100回.InputBoxメソッド(インプットボックス)


マクロ VBA サンプル画像

InputBoxメソッドはApplicationのメソッドで、ユーザー入力用のダイアログ ボックスを表示します。
表示したダイアログ ボックスに入力された情報を受け取ることが出来ます。
マクロVBAの途中でユーザーに何らかの値を入力してもらう事で、その後の処理にその値を使う場合に使用します。


これは、InputBox関数とは違います。
InputBox関数には無いTypeという引数を使うことで、より活用範囲が広がります。

InputBox関数では、文字列の入力だけしかできませんが、
InputBoxメソッドでは、
数値に限定したり、セル参照をすることが出来ます。


InputBoxメソッド

マクロVBAに情報を与えるためのダイアログ ボックスを表示します。

ダイアログ ボックスには、[OK] ボタンと [キャンセル] ボタンが表示されます。
[OK] をクリックすると、ダイアログ ボックスに入力した値が返されます。
[キャンセル] をクリックすると、InputBox は False を返します。

Application.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextID, Type)

Prompt ダイアログ ボックスに表示するメッセージを指定します。
この引数には、文字列、数値、日付、またはブール値を指定できますが、自動的に値は文字列型に変換されます。
Title ダイアログ ボックスのタイトルを指定します。
この引数を省略すると、既定値の "入力" がタイトル バーに表示されます。
Default ダイアログ ボックス内のテキスト ボックスに表示する初期値を指定します。
この引数を省略すると、テキスト ボックスには何も表示されません。
この値には、Range オブジェクトを指定することもできます。
Left 画面の左上隅を基準として、ダイアログ ボックスの X 座標をポイント単位で指定します。
ポイント: 印刷する文字のサイズ (高さ) を指定する基本単位。1ポイントは1/72 インチ です。
Top 画面の左上隅を基準として、ダイアログ ボックスの Y 座標をポイント単位で指定します。
HelpFile 対象ダイアログ ボックスで使うヘルプ ファイルの名前を指定します。
引数 HelpFile および引数 HelpContextID が共に指定されていれば、ダイアログ ボックス内に [ヘルプ] ボタンが表示されます。
HelpContextID 引数 HelpFile で指定したヘルプ ファイル内のヘルプ トピックのコンテキスト ID 番号を指定します。
Type

返されるデータの型を指定します。
この引数を省略すると、ダイアログ ボックスは文字列 (テキスト) を返します。
次の値のいずれか 1 つまたは合計値を指定できます。
たとえば、文字列または数値が入力できるダイアログ ボックスを作成するときは、引数 Type の値を 1 + 2 に設定します。


Type
Typeに指定する値

意味
0 数式
1 数値
2 文字列 (テキスト)
4 論理値 (True または False)
8 セル参照 (Range オブジェクト)
16 #N/A などのエラー値
64 数値配列

以上の値のいずれか 1 つまたは合計値を指定できます。

戻り値
ダイアログボックスには、[OK] ボタンと [キャンセル] ボタンが表示されます。
[OK] ボタンを選択すると、InputBox はダイアログ ボックスに入力された値を返し、
[キャンセル] ボタンを選択するとFalse を返します。

Typeを指定しない場合は、戻り値以外はInputBox関数とほぼ同じ使い方になります。
第24回.インプットボックス(InputBox関数)
・InputBox関数の構文 ・名前付き引数 ・InputBox関数の例文
したがって、Typeを指定しないのならInputBox関数を使用すれば良いでしょう。

以下では、Typeを指定した場合の使用例を示します。


InputBoxメソッドの使用例

数値のみ入力

Dim myNum As Variant
myNum = Application.InputBox(prompt:="数値入力", Type:=1)
'キャンセルされた場合はFalseが戻る
If myNum Then
  MsgBox myNum
Else
  MsgBox "キャンセルされました。"
End If

マクロ VBA InputBoxメソッド

数値のみ入力可能となります。
キャンセルされた場合はFalseが戻るので、受け取る変数はFalseを受け入れられるデータ型にしておきます。
数値型にしておくと0になってしまいますので、0入力と判別できなくなります。
0入力と区別する必要がある場合は数値型以外(VariantやString)で受け取る必要があります。

セル参照の入力

Dim myRange As Range
On Error Resume Next
Set myRange = Application.InputBox(prompt:="マウスでセル範囲を選択してください。", _
                  Title:="対象範囲選択", _
                  Type:=8)
'キャンセルされた場合はSetがエラーとなる
If Err.Number = 0 Then
  MsgBox myRange.Address
Else
  MsgBox "キャンセルされました。"
End If

マクロ VBA InputBoxメソッド

セル参照の入力になります。
戻り値は、Rangeオブジェクトになるので、Setステートメントを使用します。
キャンセルされた場合はFalseが戻るので、Setステートメントはエラーとなります。
これに対処するために、On Errorを使っています。

受け取る変数をVariant型にして、Setステートメントを使わずにVBAを記述した場合、

Dim myRange As Range
myRange = Application.InputBox(・・・

この場合は、myRangeにはValue値が配列として格納されます。


最後に

VBAにおいてユーザー入力を必要とするシーンでは、ほとんどの場合はInputBox関数で用が足ります。
例えば、数値に限定したい場合でも、InputBox関数の戻り値を数値かどうかを判定すれば良いだけです。

最もInputBoxメソッドを必要とするシーンとしては、セル参照の入力になるでしょう。
VBAの中で、ユーザーにセル範囲を選択してもらう場合こそ、まさにInputBoxメソッドの最大の活用シーンになると思います。




同じテーマ「マクロVBA入門」の記事

第106回.Functionプロシージャー
第107回.プロシージャーの引数
第108回.変数の適用範囲(スコープ,Private,Public)
第100回.InputBoxメソッド(インプットボックス)
第101回.Midステートメント
第102回.Intersectメソッド
第103回.UnionメソッドとAreasプロパティ
第104回.GetPhoneticメソッドとSetPhoneticメソッド(フリガナ)
第109回.列挙型(列挙体)Enum
第110回.ユーザー定義型・構造体(Type)
第111回.静的配列


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ