VBA InputBox 関数:入力した値を取得する

はじめに

Excel VBA マクロの InputBox 関数から入力した値を取得する方法を紹介します。

InputBox 関数は、インプットボックスに入力した文字列を返します。

3

説明やコメントなどをユーザーに入力させたいときに使用します。

メッセージボックスを表示するには「MsgBox 関数」をご覧ください。
  • 目次
    • InputBox 関数
    • 解説
    • 使用例

InputBox 関数

InputBox(メッセージ)
インプットボックスの説明をメッセージに指定します。入力された値を返します。

InputBox(メッセージ, タイトル, 既定値)
インプットボックスのタイトル既定値を指定できます。

引数「メッセージ」画面の説明を指定します。
引数「タイトル」省略できます。インプットボックスのタイトルを指定します。
引数「既定値」省略できます。入力値の既定値を指定します。
戻り値の型文字列型 (String)

解説

インプットボックスを表示し、入力欄に入力した値を取得します。常に「OK」と「キャンセル」ボタンが表示されます。

[OK] ボタンをクリックするか Enter キーを入力したときに、入力された値を返します。

[閉じる] ボタンや [キャンセル] ボタンをクリックしたときは、空文字 "" を返します。

引数「既定値」には改行を含む文字列を指定できます。画面上は改行されていないように見えますが、[OK] ボタンをクリックすると改行された値を返します。

入力欄に改行した文字列を入力することはできません。貼り付けしたときは改行の前の文字までが貼り付けられます。改行したいなら、専用のフォームを作成する必要があります。または特定の文字 _ を置換して改行するなどルールを決めます。

入力欄には必ず文字列で入力します。数値や日付を入力したいなら、取得した値を Integer や Date 型に変換します。

詳しくは「文字列を変換する」をご覧ください。

引数「メッセージ」が改行された文字列なら、改行して説明を表示できます。改行するには vbCrLf と結合します。

詳しくは「文字列を改行する」をご覧ください。

引数「タイトル」を省略すると、タイトルにアプリケーション名 (Microsoft Excel など) が表示されます。

使用例

OK かキャンセルを判定する。

Dim s As String
s = InputBox("OK かキャンセルか")

If s = "" Then
    Debug.Print(s) ' キャンセル
Else
    Debug.Print(s) ' OK
End If

画面に入力した値を取得する。

Dim s As String
s = InputBox("Tipsfound へようこそ" & vbCrLf & "このページは役に立ちましたか?")
Debug.Print(s) ' 入力した内容

' _ を改行する
s = Replace(s, "_", vbCrLf)
Debug.Print(s) ' _ を改行に置換
4

タイトルと既定値を指定する。

Dim s As String
s = InputBox("メッセージ", "タイトル", "既定値")
Debug.Print(s) ' 入力した内容
3