FC2ブログ

Excelじゆうちょう

Excelのお絵描きツール『りっぷ2(りっぷつぅ)』のサポートページ、まずは「はじめに」をご覧ください。 [NewEntry] [Admin]

記事更新カレンダー

08 « 2018-09 « 10
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -

やたらに多いカテゴリ

比較的新しい記事

新しいコメント

ありがたいブログ拍手

拍手コメント一覧(拍手はしない)

さみしいトラックバック

申し訳ないプロフィール

申し訳ない

管理人  [ 申し訳ない ]

pxivもやってます
リンクの一番上からのぞきに来てください
※閲覧にはユーザー登録が必要です

RSSってなんぞ?

広告は消せないらしい

FC2Ad

        --------       スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

        2011-11-08       セルの塗りつぶしの互換性

Excel2003からExcel2007にバージョンアップして、たくさんの機能が追加されました。
その反面、このバージョンアップは旧Excelの形式であるXLSファイルと互換性のない機能が追加されたとも言えます。

その中でもっともよく遭遇するのが、セルの塗りつぶしではないでしょうか。
というのも、新Excelになってカラーインデックスが使えなくなってしまったからです。
厳密には、機能自体は残っているのですが、マクロからしか使えなくなっています。
それだけならまだしも、カラーパレットまで一新されています。
これはつまり、旧Excelのカラーインデックスから消えてしまった色は互換性がなくなってしまったということです。

文章だけではわかりにくいですね、具体例で見てみましょう。

↓黄で塗りつぶして、保存↓
セルの塗りつぶし、黄

この色は新旧Excelのカラーパレットにありますので、そのまま何事もなく保存できます。

↓オレンジで塗りつぶして、保存↓
セルの塗りつぶし、オレンジ

↓互換性チェック!↓
セルの塗りつぶし、互換性チェック

たった1セルの塗りつぶしをしたただけなのに注意されてしまいました。
この色は旧Excelのカラーインデックスに存在しないという内容が書かれています。
存在しない色はカラーインデックスにある近い色に変換されます。
そのため、別の色が同じ色になってしまったり、違う色合いになってしまったりします。

【補足】
新Excelのセルの塗りつぶしではカラーパレットの他に「その他の色」という項目あり、これを使用すれば任意の色を指定することができ、互換性のある色で塗りつぶしをすることができます。
しかし、ここでは普段使いの場合を想定して、デフォルトで用意されているカラーパレットに的を絞って話を進めます。
あと、この記事では旧Excelを代表してExcel2003、新Excelを代表してExcel2010を用いて解説しています。
Excel2002はExcel2003とほとんど同じ、Excel2007はExcel2010とほとんど同じと考えて大丈夫です。

それでは、オレンジの他にはどの色に互換性がないのでしょうか。
実際にどれくらい違うのかを見比べてみましょう。

↓ちくちく1セルずつ塗りつぶし↓
旧カラーパレット

↓ちくちく1セルずつ塗りつぶし↓
新カラーパレット

かなり違いますね、カラーパレットの色数だけでも56色から70色に増えています。
とはいえ、似た色もあって目で見ただけでは完全に同じ色かどうかは見分けにくいものもあります。
これを調べるには、色を数値化したRGB値を比べるのが効果的です。
RGB値はマクロで調べることができます、以下にRGB値を取得するマクロを用意してみました。


'【コードウインドウ】
Private Sub getColorIndexList()
Dim For_r As Long, For_c As Long
Dim Lng_rgb(3) As Long
Application.ScreenUpdating = False '画面更新オフ
For For_r = 1 To 21 'カラーパレットと同じエリアを繰り返し
  For For_c = 1 To 10 '←旧Excelのカラーパレットの場合は終了値を10でなく7にすること
    Lng_rgb(0) = Cells(For_r, For_c).Interior.Color 'セルの色
    Lng_rgb(1) = Lng_rgb(0) Mod 256 '赤成分
    Lng_rgb(2) = (Lng_rgb(0) \ 256) Mod 256 '緑成分
    Lng_rgb(3) = (Lng_rgb(0) \ 256 \ 256) Mod 256 '青成分
    If Lng_rgb(1) + Lng_rgb(2) + Lng_rgb(3) < 380 Then '色が濃ければ
      Cells(For_r, For_c).Font.Color = vbWhite 'フォントの色を白
    Else
      Cells(For_r, For_c).Font.Color = vbBlack 'フォントの色を黒
    End If

    Select Case For_r Mod 3 '行番号で分岐
    Case 0
      Cells(For_r, For_c) = "'" & Right("00000" & Hex$(Lng_rgb(0)), 6) '16進数RGB値
    Case 1
      Cells(For_r, For_c) = Cells(For_r, For_c).Interior.ColorIndex '10進数RGB値
    Case 2
      Cells(For_r, For_c) = Lng_rgb(0) 'カラーインデックス
    End Select

  Next For_c
Next For_r
Application.ScreenUpdating = True '画面更新オン
End Sub


黄の文字は、実行前に変更してください。
赤の文字は、フォントの色を調整しています。
青の文字は、RGB値とカラーインデックスを取得しています。

↓旧Excel色見本↓
旧カラーパレット(RGB値)

↓新Excel色見本↓
新カラーパレット(RGB値)

各色のまとまりは、上からカラーインデックス、RGB値(10進数)、RGB値(16進数)です。
新Excelのカラーパレットのカラーインデックスは、近い色の値を表示されていますので正確ではありません。

さあ、間違い探しならぬ同じもの探しです。
ふたつのカラーパレットで同じ色はどこにあるでしょう?
スポンサーサイト

コメント

コメントの投稿

管理者にだけ表示を許可  

トラックバック

http://likep.blog63.fc2.com/tb.php/246-6c874623

 | HOME | 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。