VBAに Evaluate という命令がある。

一般的には「ワークシート関数を実行する」ことに使われるらしい。が、どうやら「それに渡す引数をVBA関数とすれば、呼び出せる」らしい。

試したのが次のコード。Excel 2010 にて。

Sub test()
Evaluate "fnc01()"
End Sub

Sub fnc01()
MsgBox "動いた"
End Sub


これで test を実行すると動く。fnc01 は Sub, Function どちらでもよい。

これを試しての感想。
 ・なぜかメッセージが2回表示される。
 ・fnc01 にブレークポイントがあっても無視される。

2回実行されるのはやだなあ。Evaluate専用でない回避策があるといいのだが。