• ベストアンサー

現在実行されているSUBステートメント名を取得することは可能ですか?

Sub マクロ1() MsgBox このマクロ名 End Sub のような処理をしたいのですが できるのでしょうか? ご教授よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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の場合は、小規模なものが多いので、何が動いているか見失うということはありません。

noname#150498
質問者

お礼

初心者なのに複雑にし過ぎて見失ってしまいます。 ご回答ありがとうございます。

その他の回答 (3)

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.3

VBA、VB6には関数名を保存する機能は持っていませんので Sub マクロ1() MsgBox "マクロ1" End Sub とするしかありません。 .netになるとあるのですが http://homepage1.nifty.com/rucio/main/dotnet/Samples/SmpleCnt.htm

noname#150498
質問者

お礼

参考になりました。ご回答ありがとうございます。

  • 777ok
  • ベストアンサー率38% (8/21)
回答No.2

とりあえず、お聞きしたいこともありますが、抜きで簡潔に言うと msgbox("マクロ名")ということでしたら出来ます。

noname#150498
質問者

お礼

ご回答ありがとうございます。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

補足をお願いします。 MsgBox このマクロ名 と言われても、この命令がマクロ1にあるということは、明白ですから、マクロ1 を直接表示するだけでは? それとも、質問の意図は、違うのでしょうか? 複数のサブ関数から、ある特定の共通関数をCallし、それがどこからCallされているかを出力したいとか? それならば、共通関数をCallする時、引数に関数名を渡せば、解決できます。

noname#150498
質問者

お礼

「この命令がマクロ1にあるということは、明白ですから、マクロ1 を直接表示するだけでは?」 説明不足ですいません。 そうなんですけど質問文は例で実際はたくさんのコードがあるのです。 関数もCALLできるのですか? 初めて知りました。 ご回答ありがとうございます。

関連するQ&A