機能① どの図からマクロが呼び出されたのかを知る
マクロを図に登録してから、その図をクリックすると、登録したマクロが呼び出されますが、
同じマクロを複数の図に登録した場合、どの図がクリックされたのか知りたい場合があります。
そんな時に、Application.Caller
プロパティを参照すれば、クリックされた図の名前を取得できます。
機能② キーボードからのキー入力を再現する
キーボードからのキー入力は、Application.SendKeys
メソッドを使うと再現できます。
これを使えば、VBAから直接コントロールできないアプリケーションでも、そのショートカットキーをApplication.SendKeys
メソッドで送ることで、間接的にコントロールできます。
例えば、電卓を起動してから、VBEのイミディエイトウィンドウ(Ctrl+G)にAppActivate "電卓" : SendKeys 1024 & "{=}", True
を入力して実行すると、電卓に1024を表示することができます。
(※電卓を起動してから数秒待たないと、実行時エラーが発生することがあります。)
機能③ [マクロの記録]ではコードが生成されない場合がある
[マクロの記録]を使っても、コードが生成されない場合があります。
例えば、図のサイズを[リセット]するボタンは、[マクロの記録]を使ってもコードが生成されません。
そんな場合でも、Application.CommandBars.ExecuteMso
メソッドを使って、機能のID(「コントロールID」と呼ぶ)を送れば、機能を実行できます。
機能④ WorksheetFunction
が使えない場合がある
VBAの関数を使うよりも、WorksheetFunction
を使う方が、プログラムの実行速度は速くなりますが、中には実行時エラーが発生して、使えない関数もあります。
そんな場合でも、Application.Evaluate
メソッドを使えば、同じ関数をエラーなしで実行できます。
(※すべての関数を試した訳ではないので、もし例外があったらスミマセン。)
また、Application.Evaluate
メソッドを簡略化した書き方として、[]
という(糖衣)構文が用意されているので、便利そうです。
機能⑤ その他
他にも便利なメソッドやプロパティが、Application
オブジェクトにあります。
下記のリンクから一覧を眺めるだけでも、勉強になりそうです。