• ベストアンサー

或るプロシージャの呼び出し元判定

MS-EXCEL2010 VBAで或るプロシージャの呼び出し元が、プロシージャかボタン操作か、また、プロシージャならプロシージャ名、ボタン操作ならボタン名を呼び出されたプロシージャ内で知る方法は有るのでしょうか。 if文で操作を変えたいのです。よろしくお願いします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

べたな方法ですが Sub msgTest(Optional ByVal myCaller As String = "NA") MsgBox caller End Sub call msgtest → NA call msgtest("are") → are のように呼び出し元で渡してあげるとか・・・。

kichi4182
質問者

お礼

ありがとうございます。色々試しましたが、この方法が1番手間はかかりますが、1番確実なようです。 ただ、この方法だと、VBEで呼び出される方に直接ステップインしようとしても出来ません。出来ればステップインを使い、デバッグをしたいのですが、何か好い方法はあるでしょうか?

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

ExcelVBAには,呼び出し元のプロシジャを遡る機能はありません。ボタン操作かどうかを調べる事なら出来ます。 作成例: sub macro1()  if typename(application.caller) = "String" then  msgbox "from button " & application.caller  else  msgbox "from other proc"  end if end sub

回答No.2
kichi4182
質問者

お礼

ありがとうございます。 ご指摘のページを見てみました。しかし、どうやら僕が使っているExcel2010では使えないようです。わざわざ教えて下さって、ありがとうございます。

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

ボタンを押したときのイベントに何と書いてありますか? (ボタンを押したときに、何らかのプロシージャーが起動されているのでは?)

関連するQ&A