1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excel VBAで知らなかった便利な機能

Last updated at Posted at 2023-09-02

機能① どの図からマクロが呼び出されたのかを知る

マクロを図に登録してから、その図をクリックすると、登録したマクロが呼び出されますが、
同じマクロを複数の図に登録した場合に、どの図がクリックされたのかを知りたいことがあります。
そんな場合に、Application.Callerプロパティを参照すれば、クリックされた図の名前を取得できます。

image.png

機能② キーボードからのキー入力を再現する

キーボードからのキー入力は、Application.SendKeysメソッドで再現できます。
これを使えば、VBAから直接コントロールできないアプリケーションでも、そのショートカットキーをApplication.SendKeysメソッドで送ることで、間接的にコントロールできます。

例えば、電卓を起動してから、イミディエイトウィンドウにAppActivate "電卓" : SendKeys 1024 & "{=}", Trueを入力して実行すると、電卓に1024を表示することができます。
(※電卓を起動してから数秒待たないと、実行時エラーが発生することがあります。)
image.png

機能③ [マクロの記録]ではコードが生成されない場合がある

[マクロの記録]を使っても、機能によっては、何もコードが生成されない場合があります。
そんな場合でも、Application.CommandBars.ExecuteMsoメソッドを使って、機能のID(「コントロールID」と呼ぶ)を送れば、機能を実行できるようです。

例えば、図のサイズを[リセット]するコードは、[マクロの記録]を使ってもコードが生成されませんが、Application.CommandBars.ExecuteMsoメソッドを使えば、図のサイズを[リセット]するコードが書けます。

image.png

機能④ WorksheetFunctionが使えない場合がある

VBAの関数を使うよりも、WorksheetFunctionを使う方が、プログラムの実行速度は速くなるらしいけど、中には実行時エラーが発生して、使えない関数もあります。
そんな場合でも、Application.Evaluateメソッドを使えば、同じ関数をエラーなしで実行できるようです。

また、Application.Evaluateメソッドを簡略化した書き方として、[]という(糖衣)構文が用意されているので、便利そうです。

機能⑤ その他

Applicationオブジェクトには、他にも便利なメソッドやプロパティがあるようです。
(一覧を眺めるだけでも、勉強になりそう。)

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?