2008年1月29日火曜日

Excel VBA で選択範囲を値に応じたセルの色に変更する

以下の表は、各男性の各女性に対する好みを 5 段階評価で表わしている。

080129-002

上記の表を次のように値に応じてセルに色を付けたい。

080129-003

方法

予めセルには値が入力されていて、色をつけたい範囲を選択してから、ボタンを押して色を付けるという実装にする。

VBA で以下のコードをサブルーチンとして定義する。

With Selection
For i = .Row To .Row + .EntireRow.Count - 1
    For j = .Column To .Column + .EntireColumn.Count - 1
        If IsNumeric(ActiveSheet.Cells(i, j).Value) Then
            ActiveSheet.Cells(i, j).Interior.ColorIndex = _
                ActiveSheet.Cells(i, j).Value + 41
        End If
    Next
Next
End With
ボタンを作成し、上記サブルーチンを呼出すようにする。

セルの色は、Cells の Interior.ColorIndex で設定する。この値は以下の数値と対応している。

080129-001

参考

疑問

最初、Worksheet の Change イベントで値が入力されたときに、セルの色を変更しようと考えた。一つ一つの値を入力するときは問題なかったが、複数の値をコピペして値を変更しようとするとエラーがでてしまった。 QQQ