ExcelVBA覚書 どのボタンを押した?

シート上にある複数のボタンから1つのサブプロシージャを起動するときなんぞに、どのボタンを押したのかわかればよいなぁ~と調べたら、意外と簡単にできるらしかった。

[ A ] [ B ] [ C ]

って3つのボタンがあって、それぞれ名前(ShapeオブジェクトのName)を「A」「B」「C」とつけておく。
(図形 1とか、ボタン 1とかの名前を変えてやるのだ。もちろん、そのままでもいいけど。)

で、これらのボタン全部 にマクロ登録して、AbcButton_Click() を実行させるとすると、

Sub AbcButton_Click () 
    Dim buf As String
    buf = Application.Caller
    Select Case buf
    Case "A"
        Msgbox "Aが押された!"
    Case "B"
        Msgbox "Bを押しましたね"
    Case "C"
        Msgbox "Cなんですか?"
    End Select
End Sub

という感じで、Application.Callerがボタンの名称を教えてくれるので、そこから分岐させる処理を記述すればよい。

ん~、もっと早く知っとけばよかった。
できないだろうという思い込みはよくない。実によくない!

Tags:,

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください