ColorIndexプロパティ
Excel2003までは色の設定はColorIndexプロパティで行っていましたが、Excel2007以降はより柔軟に設定可能なColorプロパティが追加され、そちらを利用した方が都合が良くなりました。
しかしColorIndexプロパティは無くなったわけでなく、そのまま利用可能です。
ColorIndexプロパティはカラーパレットのインデックス番号に対応しています。カラーパレットの56色の配色はExcelのオプション→保存→色ボタンで表示される「色」ダイアログで変更できます。
色が変更できるため、標準では黒は1番ですが、1番が常に黒ではありません。これが常に色が同じColorプロパティとの違いです。
ColorIndexプロパティ
1 |
Fontオブジェクト.ColorIndexプロパティ |
セルの文字色を設定する場合の親オブジェクトはFontオブジェクトになります。なお、セルの背景色の場合の親オブジェクトはInteriorオブジェクトになります。
設定の際には1から56を指定するか、XlColorIndex列挙型を指定します。
XlColorIndex列挙型
定数 | 値 | 16進数 | 内容 |
---|---|---|---|
xlColorIndexAutomatic | -4105 | &HFFFFEFF7 | 自動的に色を設定する |
xlColorIndexNone | -4142 | &HFFFFEFD2 | なし |
xlColorIndexNoneは背景色設定用の定数のため、文字色として指定しても色は変わらず元のColorIndex値のままになります。背景色のInterior.ColorIndexに設定すると、背景色なしになります。
文字を見えなくしたい場合は背景色と文字色を同じ色に設定して、見た目上見えなくするようにしてください。
サンプルコード
以下のコードはA1セルからA56セルまでにColorIndexの値を1ずつ増やしながら文字色を設定するサンプルです。
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 31 32 33 34 |
Sub OutColorIndexList() Dim i '// 1から56の番号 Dim iRow '// 行位置 Dim iColumn '// 列位置 '// 基準としてA1セルを選択 Range("A1").Select '// 初期化 iRow = 0 iColumn = 0 '// ColorIndexの1から56をループ For i = 1 To 56 '// ループ値の数字をセルに入力 ActiveCell.Offset(iRow, iColumn).Value = i '// 文字色を設定 ActiveCell.Offset(iRow, iColumn).Font.ColorIndex = i '// 以降は縦に10行ずつで出力するための措置 '// ループ値が10で割り切れる場合 If i Mod 10 = 0 Then '// 行の先頭に戻すために0初期化 iRow = 0 '// 次の列に移動 iColumn = iColumn + 1 Else '// 次の行に移動 iRow = iRow + 1 End If Next End Sub |
実行結果は以下のように出力されます。背景色が白では分かりにくい文字色があるので手で12行目にコピペして背景色黒にしています。