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