VBA インプットボックスの基本
インプットボックスの概要と基本構文
VBAでのインプットボックスは、ユーザーから情報を入力してもらうために使用される便利なツールです。基本的な構文は Application.InputBox
です。この関数は、ユーザーに情報入力を求めるダイアログボックスを表示し、その入力を変数に格納するために使います。
例えば、Dim userInput As String
userInput = Application.InputBox("名前を入力してください")
というコードは、ユーザーに名前の入力を求めるダイアログボックスを表示し、入力された名前を変数 userInput
に格納します。
prompt | インプットボックスにメッセージとして表示される文字列 |
title | 省略可能。インプットボックスのタイトルバーに表示される文字列 |
default | 省略可能。インプットボックスに初期値として表示する文字列 |
インプットボックスの引数とその使い方
インプットボックスにはいくつかの引数があり、それぞれ特定の機能を持っています。最も重要な引数は Prompt
(表示するメッセージ)、Title
(ダイアログボックスのタイトル)、Default
(初期表示されるデフォルトの入力値)です。例えば、Application.InputBox("年齢を入力してください", "年齢入力", "20")
というコードは、デフォルトで「20」と表示される「年齢入力」というタイトルのダイアログボックスを作成します。
ダイアログの表示位置とタイプの設定
インプットボックスでは、ダイアログの表示位置を指定することもできますが、通常は中央に表示されるので、特に指定する必要はありません。また、Type
引数を使用することで、入力されるデータのタイプ(数値、文字列など)を制限することができます。これは、特定の形式の入力のみを許可したい場合に特に役立ちます。たとえば、Application.InputBox("値を入力してください", Type:=1)
は数値のみの入力を受け付けるダイアログボックスを表示します。

VBA インプットボックスの応用
キャンセル処理と入力値の検証
ユーザーがインプットボックスでキャンセルボタンを押すと、戻り値として「False」が返されます。この挙動を利用して、キャンセルされた場合の特定の処理を行うことができます。例えば、If userInput = False Then MsgBox "キャンセルされました"
のようなコードは、ユーザーがキャンセルボタンを押した場合にメッセージボックスを表示します。
パスワード入力時のアスタリスク表示
VBAの標準インプットボックスでは、入力された値をアスタリスクで隠すことはできません。そのため、パスワードなどの機密情報の入力には適していません。このような場合は、VBAのユーザーフォームを使用して、アスタリスク表示が可能な入力フォームを作成することが推奨されます。
サンプルコード
VBAでのインプットボックスの使用方法を理解するために、簡単なサンプルコードを以下に示します。このコードは、ユーザーに名前の入力を求め、入力された名前をメッセージボックスで表示します。
Sub InputBoxExample()
' 変数の宣言
Dim userName As String
' インプットボックスの表示
userName = InputBox("お名前を入力してください", "名前の入力")
' 入力がなかった場合の処理
If userName = "" Then
MsgBox "入力がありませんでした。", vbExclamation, "入力エラー"
Else
' 入力された名前をメッセージボックスで表示
MsgBox "こんにちは、" & userName & "さん!", vbInformation, "挨拶"
End If
End Sub
このコードの解説:
- 最初に、
userName
という変数を宣言します。これはユーザーからの入力を格納するために使用します。 InputBox
関数を用いてユーザーに名前の入力を求めます。この関数は、入力された文字列を返します。- ユーザーが何も入力せずにOKボタンを押すか、キャンセルボタンを押した場合、
userName
は空の文字列(“”)になります。その場合、「入力がありませんでした。」というメッセージボックスが表示されます。 - ユーザーが名前を入力した場合、その名前を使って挨拶するメッセージボックスが表示されます。