ExcelVBAで処理を行うとき、次のようなことはありませんか?
- ユーザーに値を入力させたい
- 毎回コードを書き換えるのが面倒
- 実行時に条件を指定したい
このような場合は、InputBox(インプットボックス)を使うと便利です。
VBA実行時に入力ダイアログを表示し、ユーザーに値を入力してもらうことができます。
この記事では、InputBoxの基本から実務で使える応用までを初心者向けに分かりやすく解説します。
この記事でできること
- InputBoxの基本的な使い方が分かる
- 入力された値を処理に使える
- キャンセル時の対処が分かる
- 実務で使える活用例が分かる
基本:InputBoxの使い方
まずは最もシンプルなコードです。
Option Explicit
Sub InputBoxBasic()
Dim userInput As String
userInput = InputBox("値を入力してください")
MsgBox "入力された値:" & userInput
End Sub
これで、入力ボックスが表示され、入力した内容を取得できます。
InputBoxの構文
InputBox(メッセージ, タイトル, 初期値)
- メッセージ → 表示する文章
- タイトル → ウィンドウのタイトル(省略可)
- 初期値 → 最初から表示される値(省略可)
タイトルと初期値を設定する
Option Explicit
Sub InputBoxWithTitle()
Dim val As String
val = InputBox("日付を入力してください", "入力画面", "20240101")
MsgBox val
End Sub
ユーザーに分かりやすい入力画面を作れます。
数値として扱う方法
入力値は文字列で取得されるため、数値として使う場合は変換が必要です。
Option Explicit
Sub InputNumber()
Dim num As Long
num = CLng(InputBox("数値を入力してください"))
MsgBox num * 2
End Sub
CLngで数値に変換しています。
キャンセル時の処理
キャンセルが押された場合、空文字(””)が返ります。
Option Explicit
Sub InputCancelCheck()
Dim val As String
val = InputBox("値を入力してください")
If val = "" Then
MsgBox "キャンセルされました。"
Exit Sub
End If
MsgBox "入力値:" & val
End Sub
数値入力をチェックする方法
入力ミスを防ぐには、チェック処理を入れるのがおすすめです。
Option Explicit
Sub InputCheckNumber()
Dim val As String
val = InputBox("数値を入力してください")
If val = "" Then Exit Sub
If Not IsNumeric(val) Then
MsgBox "数値を入力してください。", vbExclamation
Exit Sub
End If
MsgBox "入力値:" & val
End Sub
セル範囲を指定させる方法(Application.InputBox)
セル範囲を選ばせたい場合は、通常のInputBoxではなくApplication.InputBoxを使います。
Option Explicit
Sub InputRange()
Dim rng As Range
Set rng = Application.InputBox("範囲を選択してください", Type:=8)
rng.Select
End Sub
Type:=8 を使うことで、セル選択が可能になります。
よく使う実務パターン
入力された値で検索する例です。
Option Explicit
Sub SearchByInput()
Dim keyword As String
keyword = InputBox("検索する値を入力してください")
If keyword = "" Then Exit Sub
MsgBox "「" & keyword & "」を検索します"
End Sub
実務での活用例
- 検索条件の入力
- 日付や期間の指定
- ファイル名の入力
- 処理対象の指定
InputBoxを使うことで、柔軟なマクロを作れるようになります。
よくあるエラーと対処法
① 数値入力でエラーになる
必ず IsNumeric でチェックしてください。
② キャンセル時にエラー
空文字チェックを入れると防げます。
③ コードは正しいのにエラーになる
コピー時に全角文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- InputBoxでユーザー入力を取得できる
- 入力値は文字列として扱われる
- 数値や範囲は変換・専用InputBoxを使う
- 実務では入力チェックが重要
InputBoxを使いこなせるようになると、VBAの使い勝手が大きく向上します。
ユーザーが自由に条件を指定できるようになるため、より実用的なマクロが作れるようになります。
ぜひ活用してみてください。

コメント