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【インプットボックス】についての解説を終了します。ありがとうございました。