Excel VBAでユーザーからの入力を受け取る際に便利なのがInputBox
です。InputBox
は、シンプルなダイアログボックスを表示し、ユーザーが入力した値を取得する機能を提供します。この記事では、InputBox
の基本的な使い方から、応用例までを紹介します。
基本構文
InputBoxの基本的な使い方
InputBoxは、ユーザーに情報を入力させ、その入力をVBAコードで利用するための関数です。最も簡単な形式は次の通りです。
Sub ShowInputBox()
Dim userInput As String
userInput = InputBox("何か入力してください")
End Sub
このコードを実行すると、ユーザーに対して「何か入力してください」というメッセージとともに、入力用のダイアログボックスが表示されます。ユーザーが入力した内容はuserInput
変数に格納されます。

例: ユーザーの入力をセルに表示する
以下は、ユーザーが入力した内容をアクティブなセルに表示する簡単な例です。
Sub ShowInputInCell()
Dim userInput As String
userInput = InputBox("入力をしてください")
If userInput <> "" Then
ActiveCell.Value = userInput
Else
MsgBox "何も入力されませんでした。"
End If
End Sub
このマクロを実行すると、InputBox
が表示され、ユーザーの入力がアクティブセルに書き込まれます。ユーザーが何も入力せずに「キャンセル」ボタンを押すか、空欄で「OK」を押した場合、エラーメッセージが表示されます。
InputBox関数の構文
InputBox
関数には複数の引数を指定できます。基本的な構文は以下の通りです。
InputBox(Prompt [, Title] [, Default] [, XPos] [, YPos] [, HelpFile] [, Context])
- Prompt: ダイアログボックスに表示されるメッセージ(必須)。
- Title: ダイアログボックスのタイトルバーに表示される文字列(省略可)。
- Default: デフォルトで表示される文字列(省略可)。
- XPos, YPos: ダイアログボックスの表示位置(省略可)。
- HelpFile, Context: ヘルプファイルの参照(省略可)。
例: カスタムタイトルを指定したInputBox
Sub CustomInputBox()
Dim userInput As String
userInput = InputBox("あなたの名前を入力してください", "名前の入力")
If userInput <> "" Then
MsgBox "こんにちは、" & userInput & "さん!"
Else
MsgBox "名前が入力されませんでした。"
End If
End Sub
この例では、タイトルが「名前の入力」に変更されます。ユーザーが名前を入力すると、その名前がメッセージボックスで表示されます。
応用例
例1: 複数回InputBoxを使って複数の値を取得する
複数の値を入力させたい場合、必要な分だけInputBox
を連続して表示して入力内容を取得することができます。例えば、2つの数値を入力させて、その合計を計算する例を見てみましょう。
Sub AddTwoNumbers()
Dim num1 As Double
Dim num2 As Double
Dim result As Double
num1 = InputBox("1つ目の数値を入力してください")
num2 = InputBox("2つ目の数値を入力してください")
result = num1 + num2
MsgBox "2つの数値の合計は " & result & " です。"
End Sub
このコードでは、ユーザーに2回InputBox
で数値を入力してもらい、その合計を表示します。
例2: 複数入力を区切り文字を含めて一括で取得する
InputBoxにカンマやスペースなどの区切り文字で入力させ、分割して処理する方法です。より汎用性のあるコードになります。
Sub MultipleInputExample()
Dim userInput As String
Dim inputs() As String
Dim i As Integer
' ユーザーに入力を促す
userInput = InputBox("カンマで区切って複数の値を入力してください。")
' 入力値を分割
If userInput <> "" Then
inputs = Split(userInput, ",")
For i = LBound(inputs) To UBound(inputs)
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = inputs(i) 'A列の最終行+1行目に上から順に転記する
Next i
Else
MsgBox "入力がキャンセルされました。"
End If
End Sub
このコードでは半角のカンマを区切り文字として複数の入力値を取得しています。その後繰り返し処理として、A列の最終行+1行目に転記しています。

例3: ユーザー入力を条件分岐で処理する
InputBox
の入力に基づいて条件分岐を行うことも可能です。以下の例では、ユーザーが指定した値に応じて異なるメッセージを表示します。
Sub CheckUserInput()
Dim userInput As String
userInput = InputBox("色を入力してください(赤、青、緑)")
Select Case LCase(userInput) ' 大文字小文字を無視して比較
Case "赤"
MsgBox "あなたが選んだのは赤です。"
Case "青"
MsgBox "あなたが選んだのは青です。"
Case "緑"
MsgBox "あなたが選んだのは緑です。"
Case Else
MsgBox "指定された色が無効です。"
End Select
End Sub
このコードでは、ユーザーが入力した色に応じて異なるメッセージを表示します。LCase
を使って入力を小文字に変換しているため、大文字・小文字を区別せずに処理できます。
例4: 入力された数値が正しいかチェックする
ユーザーが入力した値が有効な数値かどうかを確認する方法も紹介します。たとえば、数値以外が入力された場合にはエラーメッセージを表示するようなチェックを行います。
Sub CheckNumericInput()
Dim userInput As String
Dim userValue As Double
userInput = InputBox("数値を入力してください")
If IsNumeric(userInput) Then
userValue = CDbl(userInput)
MsgBox "あなたが入力した数値は " & userValue & " です。"
Else
MsgBox "有効な数値を入力してください。"
End If
End Sub
IsNumeric
関数を使用して、ユーザーが入力した値が数値かどうかを確認し、数値なら変換して表示します。数値でない場合はエラーメッセージを表示します。
InputBoxの使用に関する注意点
- キャンセルの扱い: ユーザーが
InputBox
で「キャンセル」をクリックすると、空の文字列(""
)が返されます。入力がない場合やキャンセルされた場合の処理を忘れずに追加しましょう。 - データ型の変換:
InputBox
で取得する値は基本的に文字列として返されます。そのため、数値や日付など他のデータ型が必要な場合は、適切に変換する必要があります。 - 入力エラーチェック: ユーザーからの入力をそのまま使用するのではなく、
IsNumeric
や他のエラーチェックを行うことで、誤入力を防ぐことが重要です。
まとめ
InputBox
は、Excel VBAにおいてユーザーからの入力を簡単に取得するための便利なツールです。基本的な使い方は非常にシンプルですが、応用することで、ユーザーに対して柔軟な入力フォームを提供できます。
この記事で紹介したサンプルコードを基に、自分のVBAプロジェクトに合わせてInputBox
を活用してみてください。ユーザー入力に基づいた処理を自動化することで、作業の効率がさらに向上するでしょう!