2019年3月27日水曜日

PCソフトウェア>EXCEL ボタンを押すと選択したセルの背景色と文字色が変わる

指定のセルの色と文字色をボタン一発で変更できないかと考えてみた。

必要要件

・アクティブセルに対して動作
・背景色と文字色はあらかじめ幾つかセットを決めておく
・ひとつのボタンに1セットとし、必要なセット数だけボタンをつくる
・初期値に戻すボタンもつくる

●ソースコード
---------------------------------------------------------------------------------------------------
Dim work As Range 'アクティブセルのアドレスを格納する変数を定義
 Set work = Selection 'アクティブセルのアドレスを変数workに退避
   ActiveCell.Interior.ColorIndex = 3 '背景色をセット
   ActiveCell.Font.ColorIndex = 2 '文字色をセット
 work.Select '変数workからアクティブセルを元に戻す
---------------------------------------------------------------------------------------------------
文字色と背景色は、必要に応じ変えてゆく。
背景色なしの場合は、番号の代わりにxlColorIndexNoneを書く
文字色を自動にする場合は、番号の代わりにxlAutomaticを書く
新しいEXCELで、色指定をRGBで行う場合は、番号の代わりにRGB(赤色,緑色,青色)と書く

改良

ActiveCellでは、範囲指定できないので、かわりにSelectionを使用する。今までどおり、単一セルへの指定もできる。

具体的には、

ActiveCell.Interior.ColorIndex = 3 → Selection.Interior.ColorIndex = 3
ActiveCell.Font.ColorIndex = 2 → Selection.Font.ColorIndex = 2

と変える。

●ソースコード
---------------------------------------------------------------------------------------------------
Dim work As Range 'アクティブセルのアドレスを格納する変数を定義
 Set work = Selection 'アクティブセルのアドレスを変数workに退避
   Selection.Interior.ColorIndex = 3 '背景色をセット
   Selection.Font.ColorIndex = 2 '文字色をセット
 work.Select '変数workからアクティブセルを元に戻す
---------------------------------------------------------------------------------------------------

色について

excel2000では背景色と文字色は色パレットにより決められいるため、これ以外の色は使えない。色は、カラー番号で指定する。

デフォルトの色パレット

新しいexcelでは、もっと多くの色が使える。(ColorIndex→Colorにすればよい)
初期値のカラーパレット(上段は色名、下段はカラー番号)※1


数字順に色を並べてみた
(抜けている数字の色を補ってある)※2


おまけ

セルの数字を読み取って、その値の背景色にするマクロ。
✱ActiveCell.Interior.ColorIndexをActiveCell.Font.ColorIndexにすると文字色の変更になる

●ソースコード
-----------------------------------------------------------------------------------------------------
Dim work As Range 'アクティブセルのアドレスを格納する変数を定義
 Set work = ActiveCell 'アクティブセルのアドレスを変数workに退避
 If ActiveCell.Value <> "" Then 'もし空文字でなければ
                             ActiveCell.Interior.ColorIndex = ActiveCell.Value '背景色の数字を読み取ってセット
                           End If
 work.Select '変数workからアクティブセルを元に戻す
------------------------------------------------------------------------------------------------------

参考

※1 office TANAKA
※2 だめだま

0 件のコメント:

コメントを投稿