みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
エクセルVBAで快適にプログラミングするためのVBEのテクニックについて、シリーズでお伝えしています。
前回の記事はコチラです。
イミディエイトウィンドウの使い方の基本中の基本、Debug.Printについてお伝えしました。
さて、そのイミディエイトウィンドウなのですが、コマンド入力画面として使えるのも知っていましたか?
意外と知られていないかもなのですが、イミディエイトウィンドウでのコマンド入力は、VBAのプログラミングを快適にする上で強力な武器になります。
ということで、今回はエクセルVBAでイミディエイトウィンドウをコマンド入力画面として使う方法とそのテクニックについてお伝えします。
オススメの便利コマンドも紹介しますよ!
なお、本記事は以下Youtube動画と連動していますので、合わせてご覧くださいませ。
では、行ってみましょう!
電卓みたいに計算式の結果を出力する
では、まずイミディエイトウィンドウをコマンド画面で使う基本中の基本、式の結果を表示する方法です。
式の結果を表示するには、イミディエイトウィンドウに
と書きます。クエスチョンマークの後に式、最後にEnterキーを押します。
例えばこんな感じです。
? 1+2+3+4
と入力してEnterすると
? 5^3
と入力してEnterすると
となります。「^」はべき乗ですね。
このように?に続いて式を書けば、イミディエイトウィンドウは電卓のように使えます。
関数を使った結果を出力する
イミディエイトウィンドウでその結果を出力する「式」ですが、VBAの関数を使うこともできます。
例えば、Hex関数は指定した数値を16進数表記に変換する関数ですが
イミディエイトウィンドウに
? hex(3000)
と入力してEnterすると
と3000という整数を16進数に変換することができます。
別の例として、日付に指定した期間を加算する関数としてDateAdd関数というものがあります。
例えば、今日から100日後を知りたいときには、イミディエイトウィンドウで
? dateadd("d",100,date())
と入力してEnterをします。ここでは、今日の日付を求めるDate関数も使っていますね。すると
このように、ズバっ!と求めることができるわけです。
変数の値を出力する
イミディエイトウィンドウに変数の値を出力するという使い方はデバッグの際にたいへんお世話になると思います。
例えば、サンプルとして以下のようなプログラムを用意しました。
Sub printTest()
Dim x As Long, y As Long
x = InputBox("整数を入力してください")
y = InputBox("もう一つ整数を入力してください")
Stop
End Sub
ユーザーからの入力を変数xとyに格納するだけのプログラムですが、Stopステートメントがありますので、以下のように、いったんそこでプログラムが停止しますよね。
この止まっているときに、イミディエイトウィンドウに
? x
とか
? y
などと入力してEnterをしますと
このように、ストップしている時点の変数の値が出力されます。
単体の変数ですが、それも「式」ですからね。出力できるのです。
ちなみに、例ではStopステートメントでプログラムを止めていますが、もちろんブレークポイントを設置して止めているときや、ステップ実行をしているときも同じようにできます。
条件式の結果を表示する
あと、ちょっと面白い使い方として、イミディエイトウィンドウに条件式の値を表示するという使い方もあります。
例えば、前述の例でStopで止まっているときに
? x>y
とか
? x<y
などと入力してEnterをしますと
と出力されます。
If文の評価をしたいときなどにワリと使えるテクニックだと思います。
プロパティの値を表示する
別のオススメの使い方としては、イミディエイトウィンドウに各種プロパティを表示することです。
これはかなり応用が利くテクニックで、使いこなすとそうでないとでは、VBA作業の効率がかなり違ってきます。
現在のExcelファイルのパスを知りたいならば
? ThisWorkbook.Path
特定の列の列番号を知りたいのであれば
? Range("p1").Column
現在選択されているセル範囲のアドレスを知りたいのであれば
? Selection.Address
など、それぞれイミディエイトウィンドウに入力してEnterをすればよいわけです。
これ、いちいちウィンドウを切り替えたりし調べることを考えると、ものすごい効率いいですよね?
ささっと Ctrl + G でイミディエイトウィンドウに移動してコマンド入力、そしてEnterです。
なお、イミディエイトウィンドウでも自動メンバー表示の機能が効きますので、ぜひ Ctrl + Space もご活用下さい。
まとめ
以上、エクセルVBAでイミディエイトウィンドウをコマンド入力画面として使うテクニックについてお伝えしました。
クエスチョンマークとの組み合わせで、数式、関数、変数、条件式、プロパティなど、あらゆる「式」の結果を表示することができますね。
すぐに調べたいときなどに大変便利ですので、ぜひご活用下さい。
どうぞお楽しみに!