「VBAで文字や数値を入力させたいとき、どうすればいいの?」
こんな疑問を持ったこと、ありませんか?

・Excel VBAで簡単な入力ダイアログ(InputBox)を作りたい!
・キャンセルが押されたときの処理もちゃんと組み込みたい!
・数値だけを受け付けるInputBoxってどう作るの?



そんな時に役立つのが、VBAの「InputBox」関数です!
この関数を使えば、セルに直接入力しなくても、ユーザーにダイアログから文字や数値を入力してもらうことができます。
さらに少し工夫することで、数値のみの入力チェックや、キャンセル時の安全な処理まで対応できるんです。
この記事では、InputBoxの基本の使い方から、次の内容を初心者の方でもすぐ実践できるようにわかりやすく解説していきます!
- InputBoxの基本的な使い方
- キャンセル処理の方法(vba inputbox キャンセル)
- 数値だけを受け付ける方法(vba inputbox 数値 のみ)
「VBAって難しそう…」と思っている方も、この記事を読み終える頃には、「これならすぐに使えそう!」と思えるはずです 。
ぜひ最後まで読んで、Excel作業をもっと便利にしてみましょう 😊✨
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
「VBAを使ってExcelの作業を効率化したいけど、どの本から始めたらいいか迷っている…」
そんな悩みはありませんか?
初心者がつまずきやすいのは、「基礎をしっかり理解できる本選び」です。
最初につまずくと、VBAに苦手意識を持ってしまい、学習が続きませんよね。
そんな方におすすめなのが、初心者に寄り添い、丁寧に解説されたVBAの入門書です。
- VBAの基礎を丁寧に、ゼロから分かりやすく解説
- 具体的なサンプルコードで、実務ですぐに使えるスキルが身につく
- 手元に置いて何度も確認できるため、挫折せずに学習を続けられる
動画で学ぶのもいいけど、まずはじっくり書籍で学びたい!という方には特におすすめです。




この記事を見て「できるようになる」こと
- VBAのInputBpxを使うと便利になることを確認する
- InputBoxの基本的な設定方法を習得する
- InputBoxを使用するうえでのコツを確認する
- InputBoxの注意ポイントを理解する
- InputBoxの具体的な使用例を通じて、実務での使用例を確認する
VBAのInputBoxを使うと、どんなことが便利になる? | セルとの違いを解説



文字を入力できるのは分かったけど
そんなに便利なの?



InputBoxは、ただの入力ダイアログではありません!
使い方次第で、セル入力よりも安全で効率的なデータ入力が実現できるんです。
「セルに直接入力すればいいじゃん」と思う方もいるかもしれませんが、InputBoxを使うことで得られるメリットは想像以上に多いんです。
セルの直接入力より安全!入力ミスを減らせる
通常のセル入力では、ユーザーが自由に何でも入力できてしまうため、想定外のデータや誤入力が発生しやすくなります。
でも、InputBoxを使えば、以下のような入力制限(バリデーション)を組み込むことができます。
たとえばこんな制御が可能!
機能 | 例 | 効果 |
---|---|---|
空欄チェック | 入力が空だったら再入力を促す | 未入力ミスを防げる |
数値のみを許可 | IsNumeric関数で判定 | 数字だけ入力OKに |
特定の文字のみ許可 | 「男性」「女性」など指定 | 限定ワードのみ入力 |
キャンセル処理 | キャンセル時は処理中断 | 意図しないデータ入力を回避 |
入力画面を最小限に保てるので、作業がスムーズ
InputBoxはポップアップ形式のシンプルなダイアログなので、シートを切り替える必要がありません。
そのため、次のようなメリットがあります。
- 入力→即実行
- 複数の手順が省ける
- データがシートに直接表示されないため、スマートな印象
それでは、次からInputBoxの説明を実施していきますね。
VBA InputBoxの基本的な使用方法を解説
「InputBox」は、Excel VBAでユーザーに文字や数値を入力してもらうためのシンプルなダイアログです。
フォームを作らず、手軽にデータ入力のインターフェースを作ることができます。
InputBoxの基本構文


引数名 | 必須/任意 | 説明 |
---|---|---|
Prompt | 必須 | 表示されるメッセージ(例:「名前を入力してください」) |
Title | 任意 | ダイアログのタイトル(例:「入力フォーム」) |
Default | 任意 | 入力欄にあらかじめ表示される初期値(例:「山田太郎」) |
XPos | 任意 | ダイアログの表示位置(左端からの位置:ピクセル指定) ※現在のExcel VBAではほぼ使用されません |
YPos | 任意 | ダイアログの表示位置(上端からの位置:ピクセル指定) ※現在のExcel VBAではほぼ使用されません |
HelpFile | 任意 | ヘルプファイルのパス(ヘルプボタン表示時に使用) ※現在のExcel VBAではほぼ使用されません |
Context | 任意 | ヘルプファイル内のコンテキスト番号 ※現在のExcel VBAではほぼ使用されません |


- XPos および YPosについて
XPos
およびYPos
は、Excel VBAでは指定しても反映されないことが多く、InputBoxは常に画面中央に表示されます。
表示位置を自由に設定したい場合は、UserFormの使用をおすすめします。
- HelpFile と Contextについて
HelpFile
とContext
は、ヘルプボタンとヘルプファイルを関連付けるための引数ですが、Excel VBAではほとんど機能せず、実質的に使用されることはほとんどありません。
さらに詳細な仕様については、Microsoft公式 – InputBox 関数を参照してください。
InputBoxの基本的な使用方法をご紹介
使用例1 : シンプルなInputBoxの使用方法
InputBoxは、最小限の形でも使えるのが魅力です!
Sub InputBox_Example1()
Dim userInput As String
userInput = InputBox("年齢を入力してください")
MsgBox "あなたの入力は: " & userInput
End Sub


Prompt
だけを指定した最小構成になります。- メッセージボックスで入力結果をそのまま表示します。
使用例2 : タイトルや初期値を追加して使う
InputBoxは、最小限の形でも使えるのが魅力です!
Sub InputBox_Example2()
Dim userInput As String
userInput = InputBox("名前を入力してください", "名前の入力", "山田太郎")
MsgBox "こんにちは、" & userInput & " さん!"
End Sub


Title
でウィンドウのタイトルを設定です。Default
で入力欄にあらかじめ表示される文字列を指定します。- 初心者向けに、入力例を見せるときに便利です。
よく使われるVBA InputBoxの使い方|数値のみ・キャンセル処理のコツ
InputBoxはシンプルなだけに、「少しの工夫」で業務効率がぐんとアップします。
ここでは、実際によく使われる便利な使い方のコツを2つご紹介します!
コツ①:InputBoxでキャンセル時に処理を中断する方法
ユーザーが キャンセル
ボタンを押した場合、InputBoxは空文字列(””)を返します。
そのまま処理を続けると、意図しない挙動になることもあるため、キャンセル時は処理を中断するようにしておくのが安全です。
コード例:キャンセル時に中断処理を行うInputBox
Sub InputBox_CancelCheck()
Dim userInput As String
userInput = InputBox("部署名を入力してください", "部署の入力")
If userInput = "" Then
MsgBox "キャンセルされました。処理を中止します。", vbExclamation
Exit Sub
End If
MsgBox "入力された部署名は「" & userInput & "」です。"
End Sub


このコードのポイント
If userInput = "" Then
でキャンセルチェックします。Exit Sub
を使って、その場で処理終了することができます。- 簡単なことですが、実務でのトラブル回避に非常に重要なテクニックです。
コツ②:VBA InputBoxで数値のみを受け取りたい場合のチェック方法
InputBoxは、基本的には「文字列」として値を返す関数です。
そのため、ユーザーが文字や記号など、数値以外を入力してしまう可能性もあります。
そんなときは、数値かどうかをチェックし、入力された値が数値かどうかを判定し、数値でなければ再入力を促す仕組みを作ると、より実用的です。
コード例:数値だけを受け付けるInputBox
Sub InputBox_OnlyNumber()
Dim userInput As String
Dim userNumber As Double
userInput = InputBox("年齢を入力してください(半角数字)", "数値の入力")
'// キャンセルまたは空欄のチェック
If userInput = "" Then
MsgBox "キャンセルされました。", vbExclamation
Exit Sub
End If
'// 数値かどうかを判定
If IsNumeric(userInput) Then
userNumber = CDbl(userInput)
MsgBox "入力された年齢は " & userNumber & " 歳です!"
Else
MsgBox "数値で入力してください!", vbCritical
Call InputBox_OnlyNumber ' ← 数値でない場合、もう一度やり直し
End If
End Sub


このコードのポイント
IsNumeric(userInput)
で数値か判定します。- 数値でなければエラーメッセージを表示し、再度InputBoxを呼び出しをおこないます。(再帰呼び出し)
Call InputBox_OnlyNumber
で処理を最初からやり直します。
InputBoxはシンプルな分、「ちょっとした工夫」でグッと実用的になる機能です。
このようなコツを押さえておくと、ユーザーに優しく・安全なマクロ作成ができるようになりますよ!
VBA InputBoxを使うときの注意ポイントをご紹介
InputBoxは手軽で便利な機能ですが、使い方を間違えると思わぬトラブルの原因になることも。
ここでは、実務で特に気をつけたいポイントを2つだけご紹介します。
注意①:キャンセルや空欄チェックを忘れると処理が暴走する恐れも
InputBoxで「キャンセル」ボタンを押すと、戻り値は空文字列(””)になります。
このまま何のチェックもせずに処理を続けてしまうと、意図しないデータが使われたり、後続処理がエラーになるリスクがあります。
コツ①:InputBoxでキャンセル時に処理を中断する方法をもう一度見てみる。
詳しくは:対策方法
If userInput = "" Then
MsgBox "キャンセルされました。処理を終了します。", vbExclamation
Exit Sub
End If
- キャンセル時や未入力時のチェックは必ず入れておきましょう
- 特にファイル名や数値など、空のまま処理すると危険な場面では必須
注意②:InputBoxの戻り値は文字列!数値変換を忘れずに
InputBoxで取得できる値は、すべて文字列(String型)です。
そのまま数値計算や条件判定に使おうとすると、型が一致せずにエラーが起きる可能性があります。
コツ②:VBA-InputBoxで数値のみを受け取りたい場合のチェック方法をもう一度見てみる。
詳しくは:対策方法
If IsNumeric(userInput) Then
Dim num As Double
num = CDbl(userInput) '// 数値に変換してから使う
End If
IsNumeric()
で数値チェックCDbl
やCLng
で明示的に数値に変換すると安心です。- データ型を意識して使うことで、後のエラーを防げます。
VBA InputBoxの使用例をご紹介 | 基本から応用まで
VBAでInputBoxを活用する代表的な使用方法 を紹介します!
以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。
VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?
そんな方には、UdemyのVBA講座がおすすめです。
動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!


\ 自分のペースで学べるVBA講座はこちら /
使用例1:InputBoxで取得した値をセルに入力する
このコードでは、ユーザーが InputBox
に入力した値を、指定のセル(ここでは A1)に反映させる方法を解説します。
マクロ実行時にダイアログが表示され、入力された内容が自動的にセルに書き込まれます。
コード例|セルへの値入力
Sub InputBoxToCell()
Dim userInput As String
userInput = InputBox("商品名を入力してください", "商品名の登録")
'// キャンセルまたは空欄チェック
If userInput = "" Then
MsgBox "入力がキャンセルされました。", vbExclamation
Exit Sub
End If
'// 入力された内容をA1セルに反映
Range("A1").Value = userInput
End Sub
処理結果


コードの動作概要
「商品名を入力してください」と表示された入力ダイアログで、ユーザーが任意の文字列を入力します。
入力が空だった場合(キャンセル含む)は処理を中止します。
入力された文字列を、セル A1
にそのまま書き込みます。
このコードで使用している機能
機能名 | 説明 |
---|---|
InputBox | ユーザーから入力を受け取るダイアログを表示します。戻り値は文字列型です。 |
Dim | InputBoxの結果を変数にセットします。 |
If文 | 入力が空(キャンセル含む)の場合の条件分岐処理に使用します。 |
MsgBox | キャンセルの場合メッセージボックスを表示します。 |
Exit Sub | 条件を満たした場合に、マクロの実行を中断します。 |
Range.Value | セルに値を代入(または取得)するためのプロパティです。 |
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub InputBoxToCell()
- マクロ「InputBoxToCell」の開始を宣言します。
ここから処理が始まります。
- マクロ「InputBoxToCell」の開始を宣言します。
- Dim userInput As String
- 入力された文字列を格納するための変数「userInput」を宣言します。
- userInput = InputBox(“商品名を入力してください”, “商品名の登録”)
- InputBoxを表示し、ユーザーに「商品名」を入力してもらいます。
入力内容は変数「userInput」に格納されます。
- InputBoxを表示し、ユーザーに「商品名」を入力してもらいます。
- If userInput = “” Then
- 入力が空(またはキャンセルされた)かどうかをチェックします。
- MsgBox “入力がキャンセルされました。”, vbExclamation
- 入力がなかった場合、警告メッセージを表示します。
- Exit Sub
- それ以上の処理を中止して、マクロを終了します。
- End If
- If条件分岐の終了を示します。
- Range(“A1”).Value = userInput
- 入力された文字列を、セル「A1」に代入します。
- End Sub
- マクロの終了を示します。
総括・ポイント
このコードは、「ユーザーに入力してもらった値を、セルに自動で書き込む」というVBAの基本的な実用例です。
- 商品名や担当者名などを手動で入力させたいとき。
- 書式付きテンプレートに対してデータだけをユーザーから入力させたいとき。
- マクロ実行時にデータを簡易登録したいとき。
使用例2:InputBoxで入力されたキーワードを検索して該当セルを特定
このコードでは、ユーザーが InputBox
に入力したキーワードが、指定された列(今回は A列)に存在するかどうかを調べ、一致するデータがあればメッセージで知らせます。
該当がなければ「見つかりませんでした」と表示されます。
コード例|指定列からのキーワード検索
Sub SearchWithInputBox()
Dim userInput As String
Dim lastRow As Long
Dim i As Long
Dim found As Boolean
userInput = InputBox("検索したいキーワードを入力してください", "データ検索")
'// 空欄またはキャンセルされた場合
If userInput = "" Then
MsgBox "検索がキャンセルされました。", vbExclamation
Exit Sub
End If
'// 最終行を取得(A列基準)
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
found = False
'// A列を上から下まで走査して一致をチェック
For i = 1 To lastRow
If Cells(i, 1).Value = userInput Then
found = True
Exit For
End If
Next i
'// 結果表示
If found Then
MsgBox "「" & userInput & "」が A列の " & i & " 行目に見つかりました!", vbInformation
Else
MsgBox "「" & userInput & "」は見つかりませんでした。", vbExclamation
End If
End Sub
処理結果


コードの動作概要
ユーザーが調べたい値(例:社員名、商品コードなど)をダイアログで入力します。
A列の最終行を特定して、検索範囲を自動調整します。
A列の最終行を特定して、検索範囲を自動調整します。
1行ずつチェックし、完全一致するデータを探します。
見つかった行を通知、なければ「見つかりませんでした」と表示します。
このコードで使用している機能
機能名 | 説明 |
---|---|
InputBox | ユーザーから入力を受け取るダイアログを表示します。戻り値は文字列型です。 |
Dim | InputBoxの結果を変数にセットします。 |
Rows.Count | シート上の行の最大数(=最終行番号)を取得します。 |
For Next | ループ処理で1行ずつデータを確認します。 |
If文 | 入力が空(キャンセル含む)の場合の条件分岐処理に使用します。 |
MsgBox | キャンセルの場合メッセージボックスを表示します。 |
Exit Sub | 条件を満たした場合に、マクロの実行を中断します。 |
Cells() | セルを行列で指定して値にアクセスします。 |
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub SearchWithInputBox()
- マクロ「SearchWithInputBox」の開始を宣言します。
- Dim userInput As String
- 入力値の変数を宣言します。
- Dim lastRow As Long
- 最終行の変数を宣言します。
- Dim i As Long
- ループカウンタの変数を宣言します。
- Dim found As Boolean
- 一致判定用の変数を宣言します。
- userInput = InputBox(“検索したいキーワードを入力してください”, “データ検索”)
- ユーザーに検索キーワードを入力させます。
- If userInput = “” Then
MsgBox “検索がキャンセルされました。”, vbExclamation
Exit Sub
End If- 入力が空だった場合はメッセージを出して処理を終了します。
- lastRow = Cells(Rows.Count, “A”).End(xlUp).Row
- A列の最終行番号を自動で取得します。
- found = False
- フラグ(見つかったかどうか)を初期化します。
- For i = 1 To lastRow
- 1行目から最終行までループします。
- If Cells(i, 1).Value = userInput Then
found = True
Exit For
End If- セルの値が検索キーワードと一致するかを判定します。
見つかったらフラグを立ててループを終了します。
- セルの値が検索キーワードと一致するかを判定します。
- Next i
- ループ処理の次の行へ進みます。
- If found Then
MsgBox “「” & userInput & “」が A列の ” & i & ” 行目に見つかりました!”, vbInformation- 該当データが見つかった場合、行番号を表示します。
- Else
MsgBox “「” & userInput & “」は見つかりませんでした。”, vbExclamation
End If- データが見つからなかった場合のエラーメッセージを表示します。
- End Sub
- サブルーチンを終了します。
総括・ポイント
このコードは、「ユーザーが任意に入力したキーワードが、一覧データの中に存在するか?」をチェックできる簡易検索ツールです。
- 商品マスタから特定のコードを探すとき。
- 社員名簿から対象の名前を素早く検索するとき。
- 登録済みデータとの重複確認するとき。
この記事のまとめ
この記事では、Excel VBAで使える便利な入力ダイアログ **「InputBox関数」**の基礎から、実務で役立つ応用方法までを徹底解説しました。
初心者の方でも安心して使えるように、「キャンセル時の処理方法」「数値入力の制限方法」といったよくあるつまずきポイント”にも対応した実践コード付きで紹介しています。
ポイントのおさらい
- VBA InputBoxの基本をマスターする
- InputBoxは、以下のような構成で手軽に入力ダイアログを表示できるVBA関数です。
- 最小限の記述で使用可能
- ユーザーからの入力を取得できる
- メッセージ、タイトル、初期値なども設定可能
⇒ 「VBA InputBoxの基本的な使用方法を解説」をもう一度見る
- InputBoxは、以下のような構成で手軽に入力ダイアログを表示できるVBA関数です。
- InputBoxを使ったバリデーションのコツ
- InputBoxはシンプルな分、バリデーション処理(入力チェック)を組み込むことで、より安全で実用的なマクロが作れます。
- キャンセル時の処理を忘れずに
- 数値チェックは
IsNumeric
を活用 - 入力が正しくなければ再入力を促す設計が安心
⇒ 「よく使われるVBA InputBoxの使い方|数値のみ・キャンセル処理のコツ」をもう一度見る
- InputBoxはシンプルな分、バリデーション処理(入力チェック)を組み込むことで、より安全で実用的なマクロが作れます。
- InputBoxの注意点も知っておこう
- 便利なInputBoxですが、以下の点に注意することでトラブルを回避できます。
- 入力値はすべて「文字列」として返ってくる
- 数値として使う場合は
CDbl
などで変換必須 - 空文字(キャンセル)にも必ず対応する
⇒ 「VBA InputBoxを使うときの注意ポイントをご紹介」をもう一度見る
- 便利なInputBoxですが、以下の点に注意することでトラブルを回避できます。
- InputBoxの実践使用例で理解を深めよう
- 実務で役立つ2つの使用例を紹介しました。
これらのコードは、業務で使える即戦力スキルになります。
⇒ 「VBA InputBoxの使用例をご紹介 | 基本から応用まで」をもう一度見る
- 実務で役立つ2つの使用例を紹介しました。
今回の学びを活用するために
この記事で学んだ内容は、以下のような業務で特に活用できます。
- 入力フォームを使わず、スマートなデータ収集をしたいとき
- 入力値にバリデーションを加えてミスを防ぎたいとき
- 小規模な業務自動化や検索マクロを素早く構築したいとき
「InputBoxが使えるようになったら、次はもっと効率的な方法も知りたい」
そんな方には、以下のような発展的なテーマもおすすめです!

