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

A 回答 (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の場合は、小規模なものが多いので、何が動いているか見失うということはありません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/29 20:29

VBA、VB6には関数名を保存する機能は持っていませんので


Sub マクロ1()
MsgBox "マクロ1"
End Sub
とするしかありません。

.netになるとあるのですが
http://homepage1.nifty.com/rucio/main/dotnet/Sam …
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/29 20:28

とりあえず、お聞きしたいこともありますが、抜きで簡潔に言うと



msgbox("マクロ名")ということでしたら出来ます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/29 20:28

補足をお願いします。


MsgBox このマクロ名

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

「この命令がマクロ1にあるということは、明白ですから、マクロ1 を直接表示するだけでは?」
説明不足ですいません。
そうなんですけど質問文は例で実際はたくさんのコードがあるのです。

関数もCALLできるのですか?
初めて知りました。
ご回答ありがとうございます。

お礼日時:2009/05/29 20:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報