条件付き書式で設定されるセルの色がExcelのバージョンによって変わってしまうが?
Question 104.8 Excel VBA Borad (掲示板)より Previous Next
はじめまして。初心者です。
あるセルに数値を反映させた後、条件付き書式でセルの色、文字色を変更させようというモジュールですが、Excel2003と2007は問題無いのですが、2010で動作させるとパソコンの違いでうまく動く時と、そうでない時があります。
何が悪いのか、アドバイスをお願い致します。FL3、4は任意で上限値と下限値を設定できるようにしてあります。
Sub FmtCnd1tn_SK氏のマクロ_2003以前用()             '2007以降で実行すると不安定
    FL4 = 100: FL3 = 200
    With Selection
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
            Formula1:=FL4, Formula2:=FL3
        .FormatConditions(1).Interior.ColorIndex = 8 '塗りつぶしの色は水色
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlNotBetween, _
            Formula1:=FL4, Formula2:=FL3
        .FormatConditions(2).Interior.ColorIndex = 2 '塗りつぶしの色は白
    End With
    With Selection.FormatConditions(2)
        .Font.Bold = True                           '太字
        .Font.ColorIndex = 2                        'フォントの色は白
        .Interior.ColorIndex = 3                    '塗りつぶしの色は赤
    End With
End Sub
Answer   Copyright (C) 2012.3.30 永井善王
提示されたマクロに、たとえば、下限である変数「FL4」に 100 を代入するコードと、上限である変数「FL3」に 200 を代入するコードを追加した後に、A1セルを選択してマクロを実行すると、下記のとおりの条件付き書式が設定されます。
 ・A1セルへ 100以上で200以下の値が入力されると、セルの色が青になる
 ・A1セルへ 100未満か200超の値が入力されると、セルの色が赤、フォントは太字で白色になる
よって、その後で、A1セルへ 201と手入力すると右図のようになり、100と入力した場合はセルの色は水色、フォントは標準で色は自動になります。

ただし、以上の説明はExcel2003の場合です。 なぜかというと下記のとおり、色の指定をカラーパレットのインデックス番号で行っているからです。
        .Interior.ColorIndex = 8                    '塗りつぶしの色は水色
        .Interior.ColorIndex = 2                    '塗りつぶしの色は白
        .Interior.ColorIndex = 3                    '塗りつぶしの色は赤
        .Font.ColorIndex = 2                        'フォントの色は白
  2003以前のカラーパレット   2007以降

カラーパレットは左図のように、2007になってガラリと変わりました。

そのため、ColorIndexプロパティで設定すると、同じ番号でも違う色になってしまう場合が多く発生します。

よって、同じマクロをバージョンの違うExcelで使う場合は、下記のようにRGB値で指定する方法をお勧めします。
        .Interior.Color = RGB(0, 255, 255)          '塗りつぶしの色は水色
        .Interior.Color = RGB(255, 255, 255)        '塗りつぶしの色は白
        .Interior.Color = RGB(255, 0, 0)            '塗りつぶしの色は赤
        .Font.Color = RGB(255, 255, 255)            'フォントの色は白
ありがとうございました
お陰様で問題無く動作出来ました。カラーの表記など勉強になりました。どうも有難うございました。
また、困った時は宜しくお願いします。

 

Excel VBA Macro