プロが教えるわが家の防犯対策術!

エクセル2000です。

マクロをワークシート上に貼ったフォームのボタンなどから呼び出す場合、ボタンの名前はApllication.Callerでわかるので、同じ一つのマクロでも呼び出されたボタンに応じた動きができるのですが、他のマクロから呼び出した場合、Apllication.Callerではエラーになってしまいます。


Sub test()
x = Application.Caller
If x = "AAA" Then MsgBox "AAA"
If x = "BBB" Then MsgBox "BBB"
Cells(1, 1).Value = "1"
End Sub

他のマクロから呼び出された場合、エラーとしないためにはOn Error Resume Next以外ではどのようにすればいいでしょうか?

A 回答 (1件)

こんにちは。

maruru01です。

Excel2000のVBAのヘルプで、「Caller プロパティの使用例」に載っている方法です。
TypeName関数で分岐処理をすればいいと思います。


Select Case TypeName(Application.Caller)
  Case "Range"
    v = Application.Caller.Address
  Case "String"
    v = Application.Caller
  Case "Error"
    v = "エラー"
  Case Else
    v = "不明です"
End Select
MsgBox "Visual Basic を呼び出した方法 = " & v
    • good
    • 0
この回答へのお礼

早速ありがとうございました。
なるほどTypeName関数ですか。こんなのがあるんですね。勉強になります。
やってみたら他のマクロから呼び出すと「エラー」になることがわかり、使えました。ありがとうございます。

お礼日時:2004/06/07 18:51

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


このQ&Aを見た人がよく見るQ&A