こんにちは。
VBAを使うことが、頻繁ではないですが、ちょくちょくあり、
その都度「コードってこれで良かったっけ?」「どう書くんだっけ?」
となることが、しばしば、、、あります。
その時その時で調べて、確認して、コードを書いてとしていたので、
自分が使いやすいように、コードをコピペで使えるようにまとめます。
内容
オートシェイプをボタンとして使うことがしばしばあり、
クリック時のオートシェイプの情報を取得するコードをまとめておきます。
また、取得した情報をもとに条件分岐させ処理を行うコードもまとめておきます。
コード
オートシェイプをクリックした際に、以下を実施するコードです。
① オートシェイプの色コードを取得し、MsgBoxで表示する。
② オートシェイプに書き込まれたテキストを、MsgBoxで表示する。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 'Date:          2020/3/7 'Contents:      オートシェイプをクリックした際、色と記入文字をMsgBoxで表示 'Argument:      無し 'RValue:        無し 'Author: 'Update:       ▲1:yy/mm/dd XXX ' 'remaarks: 'remaarks: '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ' Sub subShapeClick()     'クリックしたオートシェイプの色を取得<br>     Set MyShapeObject = ActiveSheet.Shapes(Application.Caller)     intColorCode = MyShapeObject.Fill.ForeColor.RGB     MsgBox intColorCode     'クリックしたオートシェイプの文字を取得     Set Myobj = ActiveSheet.Shapes(Application.Caller)     strBoxNo = Myobj.TextEffect.Text     MsgBox strBoxNo End Sub | 
尚、準備したエクセル上の画面はこのようにしました。

色と書かれた列に記載しているオートシェイプをクリックすると、subShapeClick が呼ばれるように、
設定をしておきます。
コードを実行
コードを実行してみます。実行するには、オートシェイプをクリックするだけです。
マクロを登録したオートシェイプにマウスを持っていくと、
マウスのポインタが、指差しマークになります。

この状態で、マウスをクリックすると、

となりMsgBoxで色のコードが表示されます。続けて、

オートシェイプに記述したテキストがMsgBoxで表示されます。
コード2
オートシェイプをクリックすると、オートシェイプの情報を取得できたので、
取得した情報をもとに条件分岐させるコードを示します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 'Date:          2020/3/7 'Contents:      オートシェイプをクリックした際、色で処理分岐 'Argument:      無し 'RValue:        無し 'Author: 'Update:       ▲1:yy/mm/dd XXX ' 'remaarks: 'remaarks: '■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ' Sub subShapeClick2()     'クリックしたオートシェイプの色を取得     Set MyShapeObject = ActiveSheet.Shapes(Application.Caller)     intColorCode = MyShapeObject.Fill.ForeColor.RGB     'MsgBox intColorCode     'クリックしたオートシェイプの文字を取得     Set Myobj = ActiveSheet.Shapes(Application.Caller)     strBoxNo = Myobj.TextEffect.Text     'MsgBox strBoxNo     'クリックしたオートシェイプの色で処理の条件分岐     If intColorCode = 16247774 Then         MsgBox "AAAを押した時の処理"     ElseIf intColorCode = 16711680 Then         MsgBox "青を押した時の処理"     ElseIf intColorCode = 255 Then         MsgBox "赤色は色をかえるよ。"         MyShapeObject.Fill.ForeColor.RGB = 16247774     End If End Sub | 
コード2を実行
例えば、赤色のオートシェイプをクリックして実行すると、

コードに記載された通り、MsgBoxでメッセージが表示されます。その後、

赤色だったEEEのオートシェイプの色が変わりました。
いろいろ使えそうでしたので、まとめておきました。

