VBA InputBoxの使い方|数値・文字の入力とキャンセル処理も解説

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
アイキャッチ

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


Excel VBAで簡単な入力ダイアログ(InputBox)を作りたい!

キャンセルが押されたときの処理もちゃんと組み込みたい!

数値だけを受け付けるInputBoxってどう作るの?

そんな時に役立つのが、VBAの「InputBox」関数です!


この関数を使えば、セルに直接入力しなくても、ユーザーにダイアログから文字や数値を入力してもらうことができます。
さらに少し工夫することで、数値のみの入力チェックや、キャンセル時の安全な処理まで対応できるんです。

この記事では、InputBoxの基本の使い方から、次の内容を初心者の方でもすぐ実践できるようにわかりやすく解説していきます!

この記事で解説していること
  • InputBoxの基本的な使い方
  • キャンセル処理の方法(vba inputbox キャンセル)
  • 数値だけを受け付ける方法(vba inputbox 数値 のみ)

「VBAって難しそう…」と思っている方も、この記事を読み終える頃には、「これならすぐに使えそう!」と思えるはずです 。
ぜひ最後まで読んで、Excel作業をもっと便利にしてみましょう 😊✨


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度

「VBAを使ってExcelの作業を効率化したいけど、どの本から始めたらいいか迷っている…」
そんな悩みはありませんか?

初心者がつまずきやすいのは、「基礎をしっかり理解できる本選び」です。
最初につまずくと、VBAに苦手意識を持ってしまい、学習が続きませんよね。

そんな方におすすめなのが、初心者に寄り添い、丁寧に解説されたVBAの入門書です。

  • VBAの基礎を丁寧に、ゼロから分かりやすく解説
  • 具体的なサンプルコードで、実務ですぐに使えるスキルが身につく
  • 手元に置いて何度も確認できるため、挫折せずに学習を続けられる

動画で学ぶのもいいけど、まずはじっくり書籍で学びたい!という方には特におすすめです。

目次

この記事を見て「できるようになる」こと

スポンサーリンク

VBAのInputBoxを使うと、どんなことが便利になる? | セルとの違いを解説

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

InputBoxは、ただの入力ダイアログではありません!
使い方次第で、セル入力よりも安全で効率的なデータ入力が実現できるんです。

「セルに直接入力すればいいじゃん」と思う方もいるかもしれませんが、InputBoxを使うことで得られるメリットは想像以上に多いんです。

セルの直接入力より安全!入力ミスを減らせる

通常のセル入力では、ユーザーが自由に何でも入力できてしまうため、想定外のデータや誤入力が発生しやすくなります。
でも、InputBoxを使えば、以下のような入力制限(バリデーション)を組み込むことができます。

たとえばこんな制御が可能!

スクロールできます
機能効果
空欄チェック入力が空だったら再入力を促す未入力ミスを防げる
数値のみを許可IsNumeric関数で判定数字だけ入力OKに
特定の文字のみ許可「男性」「女性」など指定限定ワードのみ入力
キャンセル処理キャンセル時は処理中断意図しないデータ入力を回避

入力画面を最小限に保てるので、作業がスムーズ

InputBoxはポップアップ形式のシンプルなダイアログなので、シートを切り替える必要がありません。
そのため、次のようなメリットがあります。

メリット
  • 入力→即実行
  • 複数の手順が省ける
  • データがシートに直接表示されないため、スマートな印象

それでは、次からInputBoxの説明を実施していきますね。

VBA InputBoxの基本的な使用方法を解説

「InputBox」は、Excel VBAでユーザーに文字や数値を入力してもらうためのシンプルなダイアログです。
フォームを作らず、手軽にデータ入力のインターフェースを作ることができます。

InputBoxの基本構文

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について
    • HelpFileContext は、ヘルプボタンとヘルプファイルを関連付けるための引数ですが、Excel VBAではほとんど機能せず、実質的に使用されることはほとんどありません。

さらに詳細な仕様については、Microsoft公式 – InputBox 関数を参照してください。

InputBoxの基本的な使用方法をご紹介

使用例1 : シンプルなInputBoxの使用方法

InputBoxは、最小限の形でも使えるのが魅力です!

Sub InputBox_Example1()
    Dim userInput As String

    userInput = InputBox("年齢を入力してください")

    MsgBox "あなたの入力は: " & userInput
End Sub
基本的な使用例1
解説
  • Prompt だけを指定した最小構成になります。
  • メッセージボックスで入力結果をそのまま表示します。

使用例2 : タイトルや初期値を追加して使う

InputBoxは、最小限の形でも使えるのが魅力です!

Sub InputBox_Example2()
    Dim userInput As String

    userInput = InputBox("名前を入力してください", "名前の入力", "山田太郎")

    MsgBox "こんにちは、" & userInput & " さん!"
End Sub
基本的な使用例2
解説
  • 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
数値だけを受け付けるInputBoxのフローチャート

このコードのポイント

🔍 ポイント
  • 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() で数値チェック
  • CDblCLng で明示的に数値に変換すると安心です。
  • データ型を意識して使うことで、後のエラーを防げます。
スポンサーリンク

VBA InputBoxの使用例をご紹介 | 基本から応用まで

VBAでInputBoxを活用する代表的な使用方法 を紹介します!

以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。

VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?

そんな方には、UdemyのVBA講座がおすすめです。

動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!

多彩な講座から自分に合った講座を探そう!
UdemyでVBAを検索
UdemyでVBAを検索 画像出典:Udemy

\  自分のペースで学べる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

処理結果

使用例1の結果

コードの動作概要

STEP
InputBoxで入力を受け取る

「商品名を入力してください」と表示された入力ダイアログで、ユーザーが任意の文字列を入力します。

STEP
キャンセルチェック

入力が空だった場合(キャンセル含む)は処理を中止します。

STEP
セルに反映

入力された文字列を、セル A1 にそのまま書き込みます。

このコードで使用している機能

スクロールできます
機能名説明
InputBoxユーザーから入力を受け取るダイアログを表示します。戻り値は文字列型です。
DimInputBoxの結果を変数にセットします。
If文入力が空(キャンセル含む)の場合の条件分岐処理に使用します。
MsgBoxキャンセルの場合メッセージボックスを表示します。
Exit Sub条件を満たした場合に、マクロの実行を中断します。
Range.Valueセルに値を代入(または取得)するためのプロパティです。

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub InputBoxToCell()
    • マクロ「InputBoxToCell」の開始を宣言します。
      ここから処理が始まります。
  2. Dim userInput As String
    • 入力された文字列を格納するための変数「userInput」を宣言します。
  3. userInput = InputBox(“商品名を入力してください”, “商品名の登録”)
    • InputBoxを表示し、ユーザーに「商品名」を入力してもらいます。
      入力内容は変数「userInput」に格納されます。
  4. If userInput = “” Then
    • 入力が空(またはキャンセルされた)かどうかをチェックします。
  5. MsgBox “入力がキャンセルされました。”, vbExclamation
    • 入力がなかった場合、警告メッセージを表示します。
  6. Exit Sub
    • それ以上の処理を中止して、マクロを終了します。
  7. End If
    • If条件分岐の終了を示します。
  8. Range(“A1”).Value = userInput
    • 入力された文字列を、セル「A1」に代入します。
  9. 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

処理結果

使用例2の結果

コードの動作概要

STEP
InputBoxで検索キーワードを取得

ユーザーが調べたい値(例:社員名、商品コードなど)をダイアログで入力します。

STEP
キャンセルチェック

A列の最終行を特定して、検索範囲を自動調整します。

STEP
最終行の取得

A列の最終行を特定して、検索範囲を自動調整します。

STEP
A列をループ検索

1行ずつチェックし、完全一致するデータを探します。

STEP
結果をメッセージ表示

見つかった行を通知、なければ「見つかりませんでした」と表示します。

このコードで使用している機能

スクロールできます
機能名説明
InputBoxユーザーから入力を受け取るダイアログを表示します。戻り値は文字列型です。
DimInputBoxの結果を変数にセットします。
Rows.Countシート上の行の最大数(=最終行番号)を取得します。
For Nextループ処理で1行ずつデータを確認します。
If文入力が空(キャンセル含む)の場合の条件分岐処理に使用します。
MsgBoxキャンセルの場合メッセージボックスを表示します。
Exit Sub条件を満たした場合に、マクロの実行を中断します。
Cells()セルを行列で指定して値にアクセスします。

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub SearchWithInputBox()
    • マクロ「SearchWithInputBox」の開始を宣言します。
  2. Dim userInput As String
    • 入力値の変数を宣言します。
  3. Dim lastRow As Long
    • 最終行の変数を宣言します。
  4. Dim i As Long
    • ループカウンタの変数を宣言します。
  5. Dim found As Boolean
    • 一致判定用の変数を宣言します。
  6. userInput = InputBox(“検索したいキーワードを入力してください”, “データ検索”)
    • ユーザーに検索キーワードを入力させます。
  7. If userInput = “” Then
    MsgBox “検索がキャンセルされました。”, vbExclamation
    Exit Sub
    End If
    • 入力が空だった場合はメッセージを出して処理を終了します。
  8. lastRow = Cells(Rows.Count, “A”).End(xlUp).Row
    • A列の最終行番号を自動で取得します。
  9. found = False
    • フラグ(見つかったかどうか)を初期化します。
  10. For i = 1 To lastRow
    • 1行目から最終行までループします。
  11. If Cells(i, 1).Value = userInput Then
    found = True
    Exit For
    End If
    • セルの値が検索キーワードと一致するかを判定します。
      見つかったらフラグを立ててループを終了します。
  12. Next i
    • ループ処理の次の行へ進みます。
  13. If found Then
    MsgBox “「” & userInput & “」が A列の ” & i & ” 行目に見つかりました!”, vbInformation
    • 該当データが見つかった場合、行番号を表示します。
  14. Else
    MsgBox “「” & userInput & “」は見つかりませんでした。”, vbExclamation
    End If
    • データが見つからなかった場合のエラーメッセージを表示します。
  15. End Sub
    • サブルーチンを終了します。

総括・ポイント

このコードは、「ユーザーが任意に入力したキーワードが、一覧データの中に存在するか?」をチェックできる簡易検索ツールです。

実務ではこんな場面で活躍します
  • 商品マスタから特定のコードを探すとき。
  • 社員名簿から対象の名前を素早く検索するとき。
  • 登録済みデータとの重複確認するとき。
スポンサーリンク

この記事のまとめ

この記事では、Excel VBAで使える便利な入力ダイアログ **「InputBox関数」**の基礎から、実務で役立つ応用方法までを徹底解説しました。

初心者の方でも安心して使えるように、「キャンセル時の処理方法」「数値入力の制限方法」といったよくあるつまずきポイント”にも対応した実践コード付きで紹介しています。

ポイントのおさらい

今回の学びを活用するために

この記事で学んだ内容は、以下のような業務で特に活用できます。

  • 入力フォームを使わず、スマートなデータ収集をしたいとき
  • 入力値にバリデーションを加えてミスを防ぎたいとき
  • 小規模な業務自動化や検索マクロを素早く構築したいとき

「InputBoxが使えるようになったら、次はもっと効率的な方法も知りたい」
そんな方には、以下のような発展的なテーマもおすすめです!

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「共通」を見る 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」...
スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次