ExcelVBA ~InputBox関数を使ってみよう~
- ムギ
- 10月9日
- 読了時間: 4分

はじめに
こんにちは。ティーマネジメントのシステム担当ムギです。
今回は、Excel VABでユーザがテキストを入力できるダイアログボックスを表示する
InputBox関数についてご紹介します。
※似た機能であるApplication.InputBoxメソッドについては触れません。
Application.InputBoxメソッドは改めてご紹介いたします!
InputBox関数について
InputBox関数は、ユーザがテキストを入力できるダイアログボックスを表示することができる関数です。
ユーザが入力したテキストは、戻り値として受け取ることができます。
<InputBox関数の構文>
InputBox(メッセージ, [タイトル], [初期値], [左端からの距離], [上端からの距離 ], [ヘルプファイル, コンテキスト ])
※[]内の引数は省略可能
※[ヘルプファイル,コンテキスト]は説明を省略します。
<引数の内容>
○メッセージ ※必須
・ダイアログボックスに表示するメッセージ
・改行コードを使用し、複数行入力可能
○タイトル
・ダイアログボックスのタイトルバーに表示されるテキスト
・省略した場合、アプリケーション名(Microsoft Excel)が表示
○初期値
・テキスト入力ボックス内に予め表示されるテキスト
・省略した場合、テキスト入力ボックスの初期状態は空欄になる
○左端からの距離
・スクリーン画面の左端からダイアログボックス左端までの水平方向の距離
※デュアルモニターの場合、メイン画面を基準に判定
・twip単位で数値を指定する
・省略した場合は、現在マクロブックを開いている画面の水平方向の中央寄せでダイアログが表示
※デュアルモニターの場合、メイン画面を基準に判定
○上端からの距離
・スクリーン画面の上端からダイアログボックスの上端までの垂直方向の距離 ※デュアルモニターの場合、メイン画面を基準に判定
・twip単位で数値を指定する
・省略した場合、現在マクロブックを開いている画面の約1/3下の位置に表示
例えば、以下のようなコードを実行すると

このようなテキスト入力ダイアログが表示されます。

例えば、[タイトル]引数は省略し、[初期値]引数を指定する場合は
[タイトル]引数の部分は何も入力せずに「,」で区切って指定します。
以下のようなコードを実行した場合は

このようなダイアログが表示されます。
[タイトル]引数を省略しているため、タイトルバーは「Microsoft Excel」となっています。
また、[初期値]引数以降の[左端からの距離]や[上端からの距離]も省略しているため、
マクロブックを開いている画面の上から1/3当たりの中央にダイアログが表示されています。

InputBox関数の注意点
●InputBox関数は文字列を返す
InputBox関数は文字列を返すため、戻り値を受け取る変数には文字列型を指定する必要があります。
数値を格納できる長整数型などを指定することもできますが、
ユーザが正しく数値を入力しないとエラーになってしまいますので推奨されません。
※入力する型を指定したい場合は、Application.InputBoxメソッドの使用を検討します。
●ユーザが[キャンセル]を押した場合の動作
ユーザがテキスト入力ボックスの[キャンセル]ボタンを押した場合は空欄(“”)が返ります。
キャンセルされたかどうかを判定したい場合は、戻り値が空欄かどうかで判定する必要があります。
●テキスト入力ボックスには改行不可
テキスト入力ボックスにShift+Enterなどで改行を入力することはできません。
改行を含むテキストを貼り付けた場合、改行以降のテキストは切り捨てられます。
おわりに
今回はExcel VBAのInputBox関数についてご紹介いたしました。
ユーザにお名前など、何らかのテキストを入力してもらう場合に活用できます。
ユーザが入力した内容の判定や[キャンセル]ボタンが選択された場合の動作など
気を付ける部分はいくつかございますが、
私自身も、動作を正しく理解して活用できるようにしていきたいと思います。
今回も、お付き合いいただきありがとうございました。