2015-02-05
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がボタンの名称を教えてくれるので、そこから分岐させる処理を記述すればよい。
ん~、もっと早く知っとけばよかった。
できないだろうという思い込みはよくない。実によくない!