HOME > 即効テクニック > Excel VBA > 書式設定関連のテクニック > ブックのカラーパレットを設定する

即効テクニック

書式設定関連のテクニック

ブックのカラーパレットを設定する

(Excel 2000)
ブックのカラーパレットを設定します。パレットには、56種類のカラーインデックスがあり、引数Indexでパレットの何番目かを特定します。引数を省略した場合には、パレットの56色すべてを含む配列を取得します。なお、各色はRGB値で表されます。

●詳細●

  構文  Object.Colors(Index)     設定/取得


  設定項目              内容
  Object                Workbookオブジェクト [省略不可]
  Index                 カラーインデックス番号を指定 [省略可能]


カラーパレットの何番が何色になるかは、次のサンプル1で確かめてください。

●サンプル1●
 Sub ColorsSamp1()
     Dim i As Integer

     With Range("A1:G8")
         For i = 1 To 56
             .Cells(i).Interior.Color = ActiveWorkbook.Colors(i)  '---(1)
            '.Cells(i).ColorIndex = i   '---(1)と同じ意味
             .Cells(i).Value = i
         Next i
     End With

 End Sub


通常、(1)のコードは、その次の行のコードのように記述しますが、今回に限っては意味をわかりやすくするためにこうしています。
なお、カラーパレットはブック単位で管理されており、カラーパレットの色をユーザーが変更することができます。次のサンプル2は1〜28番目までのパレットを白に、19〜56番目のパレットを黒に設定します。

●サンプル2●
 Sub ColorsSamp2()
     Dim i As Integer

     For i = 1 To 56
         If i <= 28 Then
             ActiveWorkbook.Colors(i) = RGB(255, 255, 255)  '---白に設定
         Else
             ActiveWorkbook.Colors(i) = RGB(0, 0, 0)        '---黒に設定
         End If
     Next i

 End Sub

サンプル2実行後のブックの「塗りつぶしの色」ツールバーは変更されます。
なお、カラーパレットを他のブックからコピーしたり、既定の状態に戻したりすることが可能です。次の例を参考にしてください。

●サンプル3●
 Sub ColorsSamp3()

     ActiveWorkbook.Colors = ThisWorkbook.Colors
     '---アクティブブックに、コードの記述されたブックのカラーパレットをコピー

 End Sub


●サンプル4●
 Sub ColorsSamp4()

     ActiveWorkbook.ResetColors
     '---アクティブブックのカラーパレットをリセット

 End Sub

●ポイント●
コードを記述しているブックのカラーパレットを常に一定の状態に保っておき、ThisWorkbookオブジェクトのカラーパレットからRGB値を取得するようにすれば、対象ブックのカラーパレットの状態に関係なく、コード記述時に想定した色を使用することができます。