RGB関数を使ってセルの塗りつぶしの色を指定したとき実際に表示される色
記事「Excelで表 示できる色はいったい何色?」の中でとりあえず、
個人的にExcelで表示できる色は46色ってことにしましたが
(上記記事内プロシージャ「Macro100107c」を実行すると
46色だったり、52色だったりしますが…)
どうも、セルの塗りつぶしに使える色の数は
それに近いようです。
このことに関して
マイクロソフトサポートオンライン内で次の頁がありました。
「XL2000: RGB 関数が予期しない色に マップします。」
この頁で書かれているのはShapeRangeオブジェクトのことですが、
….Interior.Color = RGB(x,y,z)
の流れからすると、
Cell(i, j).Interior.Color = RGB(x,y,z)
でも同じことが起きそうです。
それで何が起きるかというと
Colorプロパティは、RGBの3つの引数を受け取ると
最も近いColor Indexにマップするらしいです。
マップってどのような日本語にすればいいかわからないけど
要するに、RGB関数で色を指定しても
その時のカラーパレットの中で一番近い色にされてしまうようです。
ということは、
セルの塗りつぶしは
RGB関数で色を指定するのはあまり意味がなく、
ColorIndexで指定した方がいいのかなと思います。
ここでまたExcelのセルの塗りつぶしに使える色の数について考えます。
RGB関数でどんな値を指定しても
必ずカラーパレットの中の近い色になってしまうなら
結局、カラーパレットの色の数の56色が
Excelのセルの塗りつぶしに使える色の数になります。
実は、「Excelで表示できる色」から
「Excelのセルの塗りつぶしに使える色」に表現を変えました。
というのは、この頁にShapeRangeオブジェクトで、
255x255x255色使える色の指定の仕方が書いてあったからです。
以下のコードでColorIndexにマップされた色と
マップされてない色を見てみます。
Sub macro100224a() |
実行中の様子
セルA1が今のRGBの状態、
その横のセルB1がそのRGB関数を長整数型で表したもの。
セルA2の塗りつぶしをRGB関数で設定して
マップされた色を見る。
その横セルB2がそのセルから取得した色の長整数型。
セルB3が四角のシェイプから取得した色の長整数型。
| 固定リンク
この記事へのコメントは終了しました。

コメント