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メソッドで送ることで、間接的にコントロールできます。

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

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

[マクロの記録]を使っても、コードが生成されない場合があります。
例えば、図のサイズを[リセット]するボタンは、[マクロの記録]を使ってもコードが生成されません。

そんな場合でも、Application.CommandBars.ExecuteMsoメソッドを使って、機能のID(「コントロールID」と呼ぶ)を送れば、機能を実行できます。
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?