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

表題 コマンドボタンを押し自分自身のオブジェクト名を取得したいと考えております。

下記、コードにて試したところエラー2023が表示され所望の動作が確認できません。どなたかお分かりの方がいらっしゃいましたらご教授いただければ幸いです。

Private Sub CommandButton1_Click()
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
End sub

A 回答 (3件)

コントロールツールボックスのコマンドボタンでなくて、シェープやグラフなんかだとできるんですが・・・


こんなのではダメでしょうか?

標準モジュールにコピーしてください。(少なくてもSub testは標準モジュールに)
'ボタンを作る
Sub sample()
Dim i As Integer
For i = 1 To 10
With ActiveSheet.Buttons.Add(0, (i - 1) * 20, 50, 20)
.Name = "button " & i
.Caption = "ボタン" & i
.OnAction = "test"
End With
Next
End Sub
'ボタンが押された時
Sub test()
MsgBox Application.Caller
End Sub

p.s.
sampleは、何度も実行すると同じ名前のボタンを作るので注意してください。
ボタンでなくても、グラフを選択(クリック)したら・・・とかもできるみたいです。
    • good
    • 0

イベントプロシージャの名前がそれなんですが、ボタンが複数あれば


それぞれにClickイベントが作られるので、各プロシージャで定数を
セットするしかないようです。
    • good
    • 0
この回答へのお礼

 押されたコマンドボタンのオブジェクト名を引数にして関数を動作させたいと考えておりましのでこのような動作はExcel VBAでは解はなさそうな状況でしょうか。(複数のコマンドボタン内部
のプログラムをコピーペーストで使いまわせればと考えておりました。)
 取り急ぎ、愚直にベタプログラムで作業を進めたいと思います。
 ご回答有難うございました。

お礼日時:2008/05/16 09:41

>自分自身のオブジェクト


これって何を指してるんですか?
Excelのヘルプで「Callerプロパティ」を調べました?
ヘルプには、このタイプのイベントでは「エラーが返る」と書いてあるはず。
    • good
    • 0
この回答へのお礼

早速のご回答有難うございます。
 Callerプロパティを確認したところエラーが返ること確認させていただきました。
 ちなみに、所望の動作とは
 CommandButton1をクリックして、このオブジェクト名を取得したいと考えています。
 つきまして、期待値は"CommandButton1"ですが
他手法にて上記を実現できる方法はあるでしょうか?

お礼日時:2008/05/15 19:22

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

このQ&Aを見た人はこんなQ&Aも見ています


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