電子書籍の厳選無料作品が豊富!

Excel2007を使用しています。
図形(たとえば四角形)をシート上に挿入したあと、その図形をクリックする毎に、図形の色を
赤→青→赤→青

という感じで色が変化する仕組みを作りたいです。

ネットで調べたところ、マクロでないとできないように見えますが、いまいち理解できず。
お手数ですがやり方教えて頂けると大変助かります。

よろしくお願い致します。

A 回答 (3件)

勝手に違うマクロに間違えて,それで出来ませんと言われても困ります。



間違い:
>Shapes("Text Box 591").

回答と違います。回答の通りにしてください。


間違い:
>.Fill.BackColor

回答と違います。回答の通りにしてください。


間違いではないけど:
>Sub TextBox591_Click()

そもそも回答の手順と違う,勝手な段取りでやってます。
先にマクロを作っておいて,図形等(四角形でも丸でもテキストボックスでも)に取り付ける(どの図形にも同じマクロを憑ける)手順をお話ししています。



以上でテキストボックスについても,全く同様に正しく作動します。


#なお,テキストボックスでは文字色を白で抜くなどすると良いと思います。
「【Excel】図形の色をクリックするごと」の回答画像3
    • good
    • 0

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する。

#他の図形にも、同じマクロをそのまま登録して利用できます。

この回答への補足

ご回答ありがとうございました。
四角形のオブジェクトでは、ご回答頂いたやり方で実現できましたが、テキストボックスに応用しようとすると、クリックしてもまったく色が変わらず。。。やり方が間違ってますでしょうか?

以下、構文になります。
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

補足日時:2013/07/05 17:59
    • good
    • 0
この回答へのお礼

ありがとうございます。
こちらもまだ試す時間がなく。。実施結果をまたお知らせいたしますね。

お礼日時:2013/07/03 12:30

図形を挿入したら、図形を右クリックして「マクロの登録」を選び、「マクロの登録」画面の「新規作成」ボタンをクリックする。



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

補足日時:2013/07/05 17:59
    • good
    • 0
この回答へのお礼

ありがとうございます。
まだ試す時間がなく。。やってみてまた結果をお知らせいたしますね。

お礼日時:2013/07/03 12:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!