Excel VBAでのオートシェイプの指定方法を調べて

Writer: admin Type: savan Date: 2019-01-24 00:00
Excel VBAでのオートシェイプの指定方法を調べています。いくら調べても解決できませんでした。申し訳ありませんが、ご教授願います。一枚のシートに図形の小さな○が、縦に500並んでいます。オートシェイプのnameはデフォルトのままです。この○一つ一つに、クリックしたら赤・青を反転するプログラムをつけたいのですが、○一つ一つにプログラムを埋め込むと、改修が大変(後程、黄色とかを追加予定)なので、プログラムは1つだけにして、オートシェイプのnameを値渡しで受け取って、対応するオートシェイプの色を、反転するということにしたいのです。できれば、クラス処理に詳しい方の、ご指導をお願いしたく。よろしくお願いします。共感した0###クラスを使わずに、Application.Callerを使う方法です。プログラムを全部標準モジュールに置いて、sampleを実行してください。'Activeシートの全てのShapeのクリック先を設定Sub sample()Dim sh As ShapeFor Each sh In ActiveSheet.Shapes '全てのシェープにsh.OnAction = "onClick" 'Shapeがクリックされた時の飛び先'sh.Fill.ForeColor.RGB = RGB(255, 0, 0)'初期色を設定する場合NextEnd Sub'Shapeがクリックされた時の飛び先Sub onClick()If IsError(Application.Caller) Then Exit Sub '直接呼ばれた場合など終了With ActiveSheet.Shapes(Application.Caller).Fill.ForeColor 'クリックされたShapeの色が.RGB = IIf(.RGB <> RGB(255, 0, 0), RGB(255, 0, 0), RGB(0, 0, 255))End WithEnd Subナイス0
###ありがとうございます。Application.caller は知らなかったので、勉強になりました。ただ、、、少々悔しいです。自分は、この問題に1カ月かかっても解決できませんでしたから。とても助かりました。ありがとうございました。

 

TAG