
[プログラミング: VBA] マクロでイミディエイトウィンドウを消去する
どうもです (; ・`д・´)
VBAでプログラミングをしていると処理の進捗や変数の値の出力、ちょっとした計算やマクロの実行などをイミディエイトウィンドウで行ったりします。
しかし、イミディエイトウィンドウは自動で消去されないため、使い続けるとどんどんログが溜まっていき、どれが今の処理で出力しているものなのか分からなくなります。
そこで、プログラムから簡単に呼び出してイミディエイトウィンドウの内容を消去させられるプロシージャを作成します。
<コード>
'***** イミディエイトウィンドウ内を消去
Sub Clear_Immediate()
'イミディエイトウィンドウが非表示だったら終了
If Not Application.VBE.Windows("イミディエイト").Visible Then Exit Sub
'*** イミディエイトウィンドウのクリア
SendKeys "^g" '[Ctrl]+[F] イミディエイトウィンドウにフォーカス
SendKeys "^a" '[Ctrl]+[A] 出力されている内容を全選択
SendKeys "{Del}" '[Delete]キーを押す
SendKeys "{F7}" '[F7] コードウィンドウを表示させる
End Sub
コードを簡単に説明すると、イミディエイトウィンドウが表示されているかどうかをチェックして、イミディエイトウィンドウを操作するショートカットキーを送るようにしています。
このコードは僕の環境では正しく実行されますが、Debug.Print の上で実行するとDebug.Print で実行した内容も一緒に消去されてしまうようです。
また、このコードの下に DoEvents を追加すると今度はイミディエイトウィンドウが消去されなくなることがあるようです。
ん~、いざ実装してみると微妙ですね。
誰か実装してみて、上手くいったら教えて下さい (; ・`д・´)
よろしくお願いします!