- ベストアンサー
【Excel】図形の色をクリックするごとに変化
Excel2007を使用しています。 図形(たとえば四角形)をシート上に挿入したあと、その図形をクリックする毎に、図形の色を 赤→青→赤→青 という感じで色が変化する仕組みを作りたいです。 ネットで調べたところ、マクロでないとできないように見えますが、いまいち理解できず。 お手数ですがやり方教えて頂けると大変助かります。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
勝手に違うマクロに間違えて,それで出来ませんと言われても困ります。 間違い: >Shapes("Text Box 591"). 回答と違います。回答の通りにしてください。 間違い: >.Fill.BackColor 回答と違います。回答の通りにしてください。 間違いではないけど: >Sub TextBox591_Click() そもそも回答の手順と違う,勝手な段取りでやってます。 先にマクロを作っておいて,図形等(四角形でも丸でもテキストボックスでも)に取り付ける(どの図形にも同じマクロを憑ける)手順をお話ししています。 以上でテキストボックスについても,全く同様に正しく作動します。 #なお,テキストボックスでは文字色を白で抜くなどすると良いと思います。
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1() on error goto errhandle with activesheet.shapes(application.caller).fill.forecolor .rgb = iif(.rgb = vbred, vbblue, vbred) end with errhandle: end sub ファイルメニューから終了してエクセルに戻る 任意の図形をシート上に配置、右クリックしてマクロの登録を開始、いま登録したマクロを選んでOKする。 #他の図形にも、同じマクロをそのまま登録して利用できます。
- nag0720
- ベストアンサー率58% (1093/1860)
図形を挿入したら、図形を右クリックして「マクロの登録」を選び、「マクロの登録」画面の「新規作成」ボタンをクリックする。 VBAの画面が出てきて、 Sub 正方形長方形1_Click() End Sub のようになっているはずなので、Sub - End Subの間に、 Sub 正方形長方形1_Click() If ActiveSheet.Shapes("正方形/長方形 1").Fill.ForeColor.RGB = RGB(255, 0, 0) Then ActiveSheet.Shapes("正方形/長方形 1").Fill.ForeColor.RGB = RGB(0, 0, 255) Else ActiveSheet.Shapes("正方形/長方形 1").Fill.ForeColor.RGB = RGB(255, 0, 0) End If End Sub と記述する。 なお、"正方形/長方形 1"は図形の名前で、図形を右クリックするとシートの左上の枠内に表示されています。
お礼
ありがとうございます。 まだ試す時間がなく。。やってみてまた結果をお知らせいたしますね。
補足
ご回答ありがとうございました。 四角形のオブジェクトでは、ご回答頂いたやり方で実現できましたが、テキストボックスに応用しようとすると、クリックしてもまったく色が変わらず。。。やり方が間違ってますでしょうか? 以下、構文になります。 Sub TextBox591_Click() If ActiveSheet.Shapes("TextBox591").Fill.ForeColor.RGB = RGB(255, 0, 0) Then ActiveSheet.Shapes("TextBox591").Fill.ForeColor.RGB = RGB(0, 0, 255) Else ActiveSheet.Shapes("TextBox591").Fill.ForeColor.RGB = RGB(255, 0, 0) End If End Sub
お礼
ありがとうございます。 こちらもまだ試す時間がなく。。実施結果をまたお知らせいたしますね。
補足
ご回答ありがとうございました。 四角形のオブジェクトでは、ご回答頂いたやり方で実現できましたが、テキストボックスに応用しようとすると、クリックしてもまったく色が変わらず。。。やり方が間違ってますでしょうか? 以下、構文になります。 Sub TextBox591_Click() On Error GoTo errhandle With ActiveSheet.Shapes("Text Box 591").Fill.BackColor .RGB = IIf(.RGB = vbRed, vbBlue, vbRed) End With errhandle: End Sub