即効テクニック |
エクセルのカラーパレットは”セルの書式設定”ダイアログで確認できるように56色で構成されています。このカラーパレットをエクセルではブックごとにもっておりますので、細かい色の操作を行おうとするときにはパレットを変更した作業用のブックをつかう、一時的にVBAでカラーパレットを変更する、などの方法が考えられます。 VBAからカラーパレットに対応する色の変更を行うにはブックのColorsプロパティーを使用します。 (Sample1)
ActiveWorkbook.Colors(4) = RGB(250, 150, 250)
また、他のブックのカラーパレットを流用するには、対象ブックが開かれているとして・・・ (Sample2)・・・ブック名”元パレット”からカラーパレットを移植します。
ActiveWorkbook.Colors = Workbooks("元パレット.xls").Colors
※カラーパレットのリセット
ActiveWorkbook.ResetColors
限られた56色のパレットを利用して、例えば同系色のグラデーションを表現しようとする場合、上記のような方法でColorsプロパティーのインデックス指定で色を変更します。 具体的に作成したいグラデーションの配色のRGB値などをグラフィックソフト等で調べ、その範囲内で収まるようにVBAで色を変更します。 例えばピンクから白へのグラデーションを作成するとします。 ※以下のサンプルは細かい色指定を行うための例です。実際にシート上でグラデーションを行うにはオートシェープなどを使う方が効率的です。 (Sample3) (R:255,G:150,B:255・・・からGを255までの範囲で指定) ※ChangeParetteでパレット変更、PatinCellでセルの配色を行います。
Sub ChangeParette() Dim i As Integer, j As Integer With ThisWorkbook For i = 0 To 55 j = 150 + i * 2 If j > 255 Then j = 255 .Colors(i + 1) = RGB(255, j, 255) Next i End With End Sub
’グラデーションの配色テスト Sub PatinCell() Dim i As Integer Dim Rng As Range Set Rng = ActiveWindow.VisibleRange For i = 1 To 56 Rng.Resize(1).Offset(i - 1).Interior.Color = _ ThisWorkbook.Colors(i) Next i ActiveSheet.Cells.RowHeight = 6.5’確認のためセルの高さを変更 End Sub