Excel VBA InputBoxをうまく使おう

スポンサーリンク

InputBox【インプットボックス】とは

ユーザーに文字例や数値を入力してもらい、その値を受けて処理を行う場合の入力用のダイアログボックスがInputBox【インプットボックス】です。

VBAには、高度な入力画面を作成出来るUserForm【ユーザーフォーム】もありますが、単体の値を受け取るには、InputBox【インプットボックス】の方が簡単で便利です。

InputBox【インプットボックス】はInputBox関数とApplication【アプリケーション】オブジェクのInputBoxメソッドの2種類あります。

InputBox関数とInputBoxメソッドの違い

種類戻り値[キャンセル]
の戻り値
Excelの操作
InputBox関数文字列のみ空の文字列操作はできません。
InputBoxメソッドさまざまな
データ形式
Falseが返ります。操作可能です。

InputBOx画面表示の違い(Excel2016の表示例)

InputBox関数の場合

InputBoxメソッドの場合

コード表記の違い上記の表示例のコード

InputBox関数の場合

Sub sample1()
Dim 名前 As String
名前 = Inputbox("お名前を入力してください。")
End Sub

InputBoxメソッドの場合

Sub sample2()
Dim 名前 As String
名前 = Application.Inputbox("お名前を入力してください。")
End Sub

InputBoxメソッドを利用する場合はApplication【アプリケーション】オブジェクトを記述します。InputBoxの前に記述がない場合は、InputBox関数になります。戻り値を受け取るので引数は「()」カッコで囲みます。


InputBox関数

メッセージテキストとデータを入力するためのテキストボックスを表示するにはInputBox関数を使用します。[OK]ボタンをクリックすると入力された値が文字列型で返ります。[キャンセル]ボタンをクリックすると空の文字列「””」が返ります。

InputBox関数の書式と引数の説明

[]内は省略可能です。
InputBox( Prompt[, Title, Default, Xpos, Ypos, Helpfile, Context] )

  • Prompt【プロンプト】(必須)
    メッセージとして表示する文字列を指定します。
  • Title【タイトル】(省略可)
    タイトルバーに表示する文字列を指定します。
    省略した場合は「Microsoft Excel」と表示されます。
  • Default【デフォルト】(省略可)
    テキストボックスに初めから表示しておく文字列を指定します。
  • Xpos【エックスポジション】(省略可)
    InputBoxの画面上の水平位置を指定します。
    画面左端からInputBox左端までの距離(単位 Twip)を指定します。
    省略した場合は画面に中央に表示されます。
  • Ypos【ワイポジション】(省略可)
    InputBoxの画面上の垂直位置を指定します。
    画面上端からInputBox上端までの距離(単位 Twip【トゥイップ】)を指定します。
    省略した場合は画面上端から画面高さの約1/3の位置に表示されます。
  • Helpfile【ヘルプファイル】(省略可)
    ヘルプファイルを指定します。
  • Context【コンテキスト】(省略可)
    表示するヘルプの内容に対応したコンテキストID番号を指定します。

Twip【トゥイップ】単位とは

Twentisth of a Point【トゥエンティアスオフアポイント】の略でTwentisth【トゥエンティアス】は1/20の意味があり1Twipは1/20ポイントになります。(1ポイントは約0.35ミリ)

キャンセルボタンや✕ボタン、未入力の場合の処理コード例

Sub インプットボックス関数()
Dim 文字列 As String
    文字列 = InputBox("お名前を入力してください")
If 文字列 = "" Then
    MsgBox "キャンセルします。"
Exit Sub
Else
    MsgBox 文字列 & "さん、こんにちわ"
End If
End Sub

InputBoxメソッド

入力できるデータを指定してユーザーからデータを受け取るにはApplicationオブジェクトのInputBoxメソッドを使用します。[OK]ボタンをクリックすると入力されたデータが返り[キャンセル]ボタンをクリックするとFalseが返ります。

InputBoxメソッドの書式と設定値(引数)の説明

オブジェクト.InputBox( Prompt, Title, Default, Left, Top,
HelpFile, HelpContextId, Type )

  • オブジェクト(必須)
    Applicationオブジェクトを指定します。
  • Prompt【プロンプト】(必須)
    メッセージとして表示する文字列を指定します。
  • Title【タイトル】(省略可)
    タイトルバーに表示する文字列を指定します。
    省略した場合は「入力」と表示されます。
  • Default【デフォルト】(省略可)
    テキストボックスに初めから表示しておく文字列を指定します。
  • Left【レフト】(省略可)
    InputBoxの画面上の水平位置を指定します。
    画面左端を基準としてInputBoxのX座標をポイント単位で指定します。
    省略した場合は画面に中央に表示されます。
  • Top【トップ】(省略可)
    InputBoxの画面上の垂直位置を指定します。
    画面上端を基準としてInputBoxのY座標をポイント単位で指定します。
    省略した場合は画面上端から画面高さの約1/3の位置に表示されます。
  • Helpfile【ヘルプファイル】(省略可)
    ヘルプファイルを指定します。
  • HelpContext【ヘルプコンテキスト】(省略可)
    表示するヘルプの内容に対応したコンテキストID番号を指定します。
  • Type【タイプ】(省略可)
    戻り値のデータ型をデータ型を表す値を使用して指定します。
    省略した場合は2の文字列が設定されます。

    データ型
    0数式
    1数値
    2文字列(既定値)
    4論理値(TrueまたはFalse)
    8セル参照(Rangeオブジェクト)
    16「#N/A」などのエラー値
    64数値配列

    複数のデータ型の値を受け取りたい場合は、値を加算して設定します。例えば、数値と文字列を受け取る場合は
    「1(数値)+2(文字列)=3」なので3を指定します。

キャンセルボタンや✕ボタン、未入力の場合の処理コード例

Sub インプットボックスメソッド()
Dim 文字列 As Variant
    文字列 = Application.InputBox("お名前を入力してください")
If 文字列 = False Then
    MsgBox "キャンセルします。"
Exit Sub
Else
    MsgBox 文字列 & "さん、こんにちわ"
End If
End Sub


InputBoxメソッドの引数Typeを8の「セル参照」の場合Inputboxメソッドの戻り値を格納する変数がオブジェクト型になり
キャンセルボタンが押された時に戻り値がFalseでブール型となるためデータ型の違いでエラーが発生します。戻り値が「セル参照」の場合は以下のコードでキャンセルや✕ボタンが押されたときの処理をします。

選択セル範囲に罫線をひくコード例

Sub インプットボックスメソッド2()
Dim 範囲 As Range
On Error GoTo エラー処理
Set 範囲 = Application.InputBox("罫線をひく範囲を選択してください", Type:=8)
    範囲.Borders.LineStyle = True
Exit Sub
エラー処理:
    MsgBox "キャンセルします。"
End Sub

実行結果


以上で、InputBox【インプットボックス】についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告