スポンサーリンク
はじめに
前回までの記事で、Excel VBAのメッセージボックスMsgBoxを扱ったが、今度はインプットボックスInputBoxというものを扱う。
MsgBoxは、選択肢を持たせることはできるにせよ、ボタンを押させることしかできなかった。
それに対し今回扱うInputBoxは、文字や数字などの入力をさせることができる。
InputBoxのテンプレ
さて、MsgBoxにおいてもタイトルTitleとか色々と指定するけど、InputBoxにおいても指定するもの(引数ってやつ)は幾つかある。
で、MsgBoxにおいては、引数に指定するTitleとかの記述(オプション名ってやつ)は割と省略できたけど、InputBoxでは省略しにくい。というより、しない方が良い。
面倒だから、次のソースコードをマクロ中にコピペし、型に当てはめて毎回使ってしまおう。
1 2 3 4 5 6 7 8 9 10 11 |
'Application.InputBoxのType '0:数式 '1:数値 '2(省略):文字列 '8:セル参照 Dim var As Variant '通常の場合 var = Application.InputBox("(メッセージを入力)", Title:="(タイトルを入力)", Type:=1) 'デフォルト値Defaultを設定する場合 'var = Application.InputBox("(メッセージを入力)", Title:="(タイトルを入力)", Default:=1, Type:=1) |
ソースコード中のコメントにも書いてる通り、デフォルト値Defaultってやつを設定する場合・しない場合に分けてるが、言い換えればこの「Default」以外は全て、毎回必ず入れるようしよう。
逆に、それ以上の引数を入れる必要もない。
入れようと思えば、画面上のどの位置にInputBoxを表示しようって指定とか、ヘルプファイルを指定するとかいう引数もあるけど、そんなの使う必要ないと思うので説明しない。
InputBoxの引数:重要なのはType
InputBoxの主要な引数は、
- 最初のメッセージ文
- タイトルTitle
- デフォルト値Default
- Type
の4つあるけど、どう見ても説明が必要なのは最後のTypeだけだろう。
このTypeは、InputBoxにどんなタイプのデータを入力させ受け付けるかを指定できるもので、これがInputBoxのキモと言えるだろう。
Typeには、下表の通りの類型があるが、赤文字の1,2,8だけ押さえれば良いと思う。
値 | 型 |
---|---|
0 | 数式 |
1 | 数値 |
2(省略) | 文字列 |
4 | 論理値(True/False) |
8 | セル |
16 | エラー値(#N/Aなど) |
64 | 数値配列 |
8の「セル」なんて、使うことがあるのか、ピンと来ないかも知れない。
実際、私も滅多なことではそんなの使わないけど、使ってみたマクロの記事も書いてます。
終わりに:InputBoxの最重要事項
さて、InputBoxを使って色々と入力させたものを受け取る例文を示したりしたいところだが、今回の記事はここで終わる。
というのも、妙な話のようだが、InputBoxで最も重要なのは、「キャンセル」ボタンをクリックするとかEscボタンを押すとかでキャンセル処理された場合の記述だ。
というのもTypeに1(数値)を指定したときなんかは、キャンセルボタンを押されたときには数値的には「0」の値になる。でもこれを、本当にユーザが0という数字を入力したのと、どうやって見分けるのって話だ。
で、それがType:=2(文字列)だったときは?
これは、VBAでInputBoxを使う人を必ず悩ませる問題だ。
だから、今回はこの辺りで終わらせて、キャンセル処理については次回の記事で述べる。
スポンサーリンク