教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】InputBox関数の使い方を教えて!

構文

構文は以下の通りです。

InputBox(メッセージ, [タイトル], [初期値文字列], [X軸], [Y軸], [ヘルプファイル], [コンテキストID])

解説

InputBox関数は、ユーザーからの入力を受け取るための関数です。マクロを実行する際に、ユーザーに対してメッセージを表示し、入力を求めることができます。ユーザーが入力した値は、変数に代入することができます。

引数 指定 内容
メッセージ 必須 ユーザーに表示するメッセージを指定します。
タイトル 省略可 入力ボックスのタイトルを指定します。
初期値文字列 省略可 初期値として表示する文字列を指定します。
X軸 省略可 表示位置(X軸)を指定します。
Y軸 省略可 表示位置(Y軸)を指定します。
ヘルプファイル 省略可 ヘルプ用のファイルを指定します。
コンテキストID 省略可 ヘルプボタンクリック時に表示するページ位置を指定します。

使用例

InputBox("何か入力して下さい。")
InputBox("何か入力して下さい。" & vbLf & "入力サンプルをここに書きます。")
InputBox("何か入力して下さい。", "ユーザー入力", "既定文字")

使い方

具体的な使い方を紹介します。

1.データの入力と処理

InputBox関数を活用する具体的な例として、テストの成績を入力して平均点を計算する場面を考えてみましょう。以下のようなコードを使って、生徒たちの成績を入力し、平均点を表示することができます。

Sub CalculateAverage()
    Dim Total As Double
    Dim Count As Integer
    Dim Score As String
    Do
        Score = InputBox("成績を入力してください(終了するには空白を入力)")
        If Score <> "" Then
            Total = Total + CDbl(Score)
            Count = Count + 1
        End If
    Loop Until Score = ""
    If Count > 0 Then
        MsgBox "平均点は " & Total / Count & " です。"
    Else
        MsgBox "成績が入力されていません。"
    End If
End Sub

上記のコードでは、InputBox関数を使って成績を入力しています。ユーザーが空白を入力するまで、繰り返し入力を受け付けます。入力された成績は合計値とカウントに加算され、最終的に平均点が計算されます。平均点はメッセージボックスで表示されます。

2.データの確認と検証

また、データの確認や検証にも役立ちます。例えば、テストの点数を入力する際に、0から100の範囲内の値であるかを確認する場合、以下のようなコードを使うことができます。

Sub CheckScore()
    Dim Score As String
    Do
        Score = InputBox("点数を入力してください(0から100の範囲内)")
        If Not IsNumeric(Score) Then
            MsgBox "数値を入力してください。"
        ElseIf Score < 0 Or Score > 100 Then
            MsgBox "0から100の範囲内で入力してください。"
        Else
            MsgBox "入力された点数は正当です。"
            Exit Sub
        End If
    Loop
End Sub

上記のコードでは、入力された値が数値であるかを確認し、範囲内かどうかを判定しています。不正な入力がある場合は適切なメッセージを表示し、再度入力を促します。

プログラミング例

以下に、具体的なプログラミング例を示します。

Sub GetUserName()
    Dim userName As String
    userName = InputBox("あなたの名前を入力してください", "名前入力")
    If userName <> "" Then
        MsgBox "ようこそ、" & userName & "さん!", vbInformation
    Else
        MsgBox "名前が入力されていません。", vbExclamation
    End If
End Sub

上記の例では、InputBox関数を使用してユーザーから名前の入力を受け取っています。Prompt引数には「あなたの名前を入力してください」というメッセージが表示され、Title引数には「名前入力」というタイトルが設定されています。ユーザーが入力した名前はuserNameという変数に代入され、その後の処理で使用されます。入力があった場合は、入力された名前をメッセージボックスで表示します。入力がなかった場合は、名前が入力されていません」というメッセージを表示します。

まとめ

InputBox関数を使うことで、ユーザーからの動的な情報を取得し、その情報を元にプログラムの動作を制御することができます。是非活用してください。