- ベストアンサー
現在実行されているSUBステートメント名を取得することは可能ですか?
Sub マクロ1() MsgBox このマクロ名 End Sub のような処理をしたいのですが できるのでしょうか? ご教授よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 VBA上では、VBAの中から、VBAの実行名を出すのは、そのステートメント名の表示をステータスバーなどに出す、ということはあるかとは思います。「マクロ ON マクロ」という現行のマクロが動いている上からは、取得する方法は思い当たりません。CPUの占有率の問題でもあります。 'サンプルコード Sub Test1() Dim i As Long Dim k As Long Application.StatusBar = False For i = 1 To 10 ^ 5 DoEvents If i Mod 10 ^ 4 = 0 Then k = k + 1 Application.StatusBar = "Test1.." & String(k, "■") End If Next Application.StatusBar = False End Sub ただ、何のために必要かということですね。VBAの場合は、小規模なものが多いので、何が動いているか見失うということはありません。
その他の回答 (3)
- noah7150
- ベストアンサー率46% (116/251)
VBA、VB6には関数名を保存する機能は持っていませんので Sub マクロ1() MsgBox "マクロ1" End Sub とするしかありません。 .netになるとあるのですが http://homepage1.nifty.com/rucio/main/dotnet/Samples/SmpleCnt.htm
お礼
参考になりました。ご回答ありがとうございます。
- 777ok
- ベストアンサー率38% (8/21)
とりあえず、お聞きしたいこともありますが、抜きで簡潔に言うと msgbox("マクロ名")ということでしたら出来ます。
お礼
ご回答ありがとうございます。
- kokorone
- ベストアンサー率38% (417/1093)
補足をお願いします。 MsgBox このマクロ名 と言われても、この命令がマクロ1にあるということは、明白ですから、マクロ1 を直接表示するだけでは? それとも、質問の意図は、違うのでしょうか? 複数のサブ関数から、ある特定の共通関数をCallし、それがどこからCallされているかを出力したいとか? それならば、共通関数をCallする時、引数に関数名を渡せば、解決できます。
お礼
「この命令がマクロ1にあるということは、明白ですから、マクロ1 を直接表示するだけでは?」 説明不足ですいません。 そうなんですけど質問文は例で実際はたくさんのコードがあるのです。 関数もCALLできるのですか? 初めて知りました。 ご回答ありがとうございます。
お礼
初心者なのに複雑にし過ぎて見失ってしまいます。 ご回答ありがとうございます。