2009年02月05日

ExcelVBA:オートシェイプの色を変更

行列の表示非表示ボタンの色変更
→日コマ内関連記事
・オートシェイプに名前定義
・色の指定方法
・参考例
この記事は上記関連記事の追補メモです
個人的メモにつき文中記載のリファレンスにて詳細はご確認を

■オートシェイプに名前定義
1)オートシェイプをアクティブに
2)名前ボックス(数式バーの左隣)に任意の名前をつける
のが手っ取り早いです

■シェイプに色をつけたい
VBAで既存のシェイプに色をつける/変更したい場合は、まずそのシェイプを特定できないとダメーなので、名前定義しておくと便利。その上で
Shapes("名前").Fill
.ForeColor.RGB = RGB(R, G, B)'前景色
.BackColor.RGB = RGB(R, G, B)'背景色
などとします。
シェイプによって指定できるFillプロパティは当然違いますので注意。
ココであげたのはあくまで一例です。ご了承のほど。

■MSDNのVBAリファレンス
Microsoft Excel Visual Basic リファレンス(XP)
Microsoft Excel Visual Basic リファレンス(2003)
※2009/2現在のURLですご了承を

■サンプル
列の表示非表示切替と組み合わせてみました
→日コマ内関連記事:表示非表示切替
オートシェイプは指定しやすいように名前定義(今回は『TOTAL』)してあります。
名前定義をしない場合、オートシェイプの名前を調べるとかしないとなので不便かも。
Sub HiddenTOTAL()
Columns("J:K").EntireColumn.Hidden = Not Columns("J:K").EntireColumn.Hidden
'列J:Kの表示非表示切替
If Columns("J:K").EntireColumn.Hidden = False Then
Shapes("TOTAL").Fill.ForeColor.RGB = RGB(255, 204, 153)
Else: Shapes("TOTAL").Fill.ForeColor.RGB = RGB(204, 255, 255)
End If
'Not構文がある場合If文の組み立てに注意
End Sub
色はRGBで指定するのが無難と思われ。

14:49│PC周辺種々雑多 | |blogram投票ボタン|日コマ雑記帖