目次
目的
- 最後に実行したマクロ名を文字列で記録しておく。
- マクロ名を文字列で渡して、そのマクロを実行する。
その一例
- 標準モジュールに下記コードを記述しました。
Dim 最後に実行したマクロ As String
Sub マクロ1()
Debug.Print "マクロ1"
最後に実行したマクロ = "マクロ1"
End Sub
Sub マクロ2()
Debug.Print "マクロ2"
最後に実行したマクロ = "マクロ2"
End Sub
Sub 最後に実行したマクロを再実行()
Application.Run 最後に実行したマクロ
End Sub- Dim 最後に実行したマクロ As String
モジュールレベルで宣言した変数は、各 Sub から使用する事ができるようです。最後に実行したマクロを記録しておくための変数です。
補足ですが、 Sub ~ End Sub (=プロシージャというらしいです)内で宣言した変数は、プロシージャレベルの変数となるようで、他の Sub , Function からは使用出来ないようです。 - Application.Run 最後に実行したマクロ
文字列でマクロ名を渡して実行できるようです。
- Dim 最後に実行したマクロ As String
- 上記「マクロ1」を実行してみます。
- イミディエイトウィンドウへの出力結果です。
- イミディエイトウィンドウへの出力結果です。
- 上記「最後に実行したマクロを再実行」を実行してみます。
- イミディエイトウィンドウへの出力結果です。
- イミディエイトウィンドウへの出力結果です。
- 上記「マクロ2」を実行してみます。
- イミディエイトウィンドウへの出力結果です。
- イミディエイトウィンドウへの出力結果です。
- 上記「最後に実行したマクロを再実行」を実行してみます。
- イミディエイトウィンドウへの出力結果です。
- イミディエイトウィンドウへの出力結果です。
マクロストック
Sub マクロ3(引数1, 引数2, 引数3)
Debug.Print 引数1
Debug.Print 引数2
Debug.Print 引数3
End Sub
Sub ApplicationRunメソッドで引数を渡す()
Application.Run "マクロ3", "A", "B", "C"
End Sub
「ApplicationRunメソッドで引数を渡す」の実行結果は以下のようになりました。
画像ストック
私が普段使用する事のない Static を使用したりもしてみましたが、モジュールレベルの変数宣言で目的の処理を行うことが出来ました。
テスト環境
- Windows 10(64 ビット)
- Microsoft Office Excel 2003
以上、閲覧ありがとうございました。