Excel VBA InputBox(1)InputBoxの基本形

Excel マクロ、VBA

スポンサーリンク

はじめに

前回までの記事で、Excel VBAのメッセージボックスMsgBoxを扱ったが、今度はインプットボックスInputBoxというものを扱う。

MsgBoxは、選択肢を持たせることはできるにせよ、ボタンを押させることしかできなかった。
それに対し今回扱うInputBoxは、文字や数字などの入力をさせることができる。

InputBoxのテンプレ

割とどーでもいい話

InputBoxというものには、

  • Application.InputBoxの形で扱うInputBoxメソッド
  • 単にInputBoxの形で扱うInputBox関数

の2つがある。

ただ、InputBoxメソッド(Application.InputBox)がInputBox関数の上位互換だと思うし、私もそれしか使ったことがないので、本記事でもInputBoxメソッドについてのみ扱う。

どう上位互換なのかって、InputBoxメソッドでは後述のTypeというやつを指定できるんだけど、むしろそれを指定しないと話にならないと思うしね。

で、メソッドなんて言葉を使って説明したくはないので、単にInputBoxと表記します。

さて、MsgBoxにおいてもタイトルTitleとか色々と指定するけど、InputBoxにおいても指定するもの(引数ってやつ)は幾つかある。

で、MsgBoxにおいては、引数に指定するTitleとかの記述(オプション名ってやつ)は割と省略できたけど、InputBoxでは省略しにくい。というより、しない方が良い。

面倒だから、次のソースコードをマクロ中にコピペし、型に当てはめて毎回使ってしまおう。

ソースコード中のコメントにも書いてる通り、デフォルト値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の「セル」なんて、使うことがあるのか、ピンと来ないかも知れない。

実際、私も滅多なことではそんなの使わないけど、使ってみたマクロの記事も書いてます。

Excel VBA シートの見出し色を他のシートからコピーするマクロ 個人用マクロブックに組み込める

2018年7月30日

終わりに:InputBoxの最重要事項

さて、InputBoxを使って色々と入力させたものを受け取る例文を示したりしたいところだが、今回の記事はここで終わる。

というのも、妙な話のようだが、InputBoxで最も重要なのは、「キャンセル」ボタンをクリックするとかEscボタンを押すとかでキャンセル処理された場合の記述だ。

というのもTypeに1(数値)を指定したときなんかは、キャンセルボタンを押されたときには数値的には「0」の値になる。でもこれを、本当にユーザが0という数字を入力したのと、どうやって見分けるのって話だ。

で、それがType:=2(文字列)だったときは?
これは、VBAでInputBoxを使う人を必ず悩ませる問題だ。

だから、今回はこの辺りで終わらせて、キャンセル処理については次回の記事で述べる。

Excel VBA InputBox(2)キャンセル処理の決定版・・・だと思う

2019年4月17日

スポンサーリンク