« セル内で改行、マクロ自動記録では… | トップページ | 種々のカラーパレット »

2010年2月18日 (木)

カラーパレットを変更する

手動でカラーパレットを変更するには
メニュー[ツール] - [オプション]を選びます。
すると、このようなダイアログが表示されます。

Pic20100218a_2

このダイアログの[色]タブのところの[変更]ボタンで
カラーパレットを変更できます。
[変更]ボタンの下の[リセット]ボタンで
デフォルトのカラーパレットに戻すことができます。

VBAでカラーパレットの色を変更するには
Colors プロパティを使います。

ActiveWorkbook.Colors(1) = RGB(0, 0, 0)

のように使います。
上の例は、アクティブなワークブックのカラーパレットの
カラーインデックス1を、RGB(0, 0, 0)に設定しています。

セルの塗りつぶしをVBAで実行するときに

Cells(1, 1).Interior.ColorIndex = 1

のようにカラーインデックスで指定できます。

このカラーインデックスが
Colorsプロパティで設定する番号と同じになっています。
ですから、

ActiveWorkbook.Colors(1) = RGB(0, 0, 0)
Cells(1,1).Interior.ColorIndex = 1

と実行すると
セルA1(=Cells(1,1))の塗りつぶしがRGB(0, 0, 0)で設定されます。

ActiveWorkbookのところは

Workbooks("Book1.xls").Colors(1) = RGB(0, 0, 0)

のようにしても使えます。

カラーパレットの色は56色あるので

ActiveWorkbook.Colors(1) = RGB(0, 0, 0)
ActiveWorkbook.Colors(2) = RGB(0, 0, 128)
ActiveWorkbook.Colors(3) = RGB(0, 102, 0)

ActiveWorkbook.Colors(56) = RGB(255, 255, 255)

のようにカッコ内の数字を1~56まで替えて
それぞれの色を設定できます。

最初の画像から分かるように
カラーパレットは、横 8 x 縦 7 = 56色なのですが、
カラーインデックスは
上から順に1列目の左から1, 2, 3, 4, 5, 6, 7, 8
2列目の左から9, 10, 11, 12, 13, 14, 15, 16…
といった順番にはなっていません。

調べてみたところ
このような順番になっていました。

Pic20100218b

VBAでのみ色を使う場合は
カラーパレットでの並び順は
大して重要ではないかもしれませんが、
手動で色をつけるときは
並び順は分かりやすい方がいいと思います。

実際にパレットを変更してみます。

青から赤へ
定量的に変化していくパレットに変更します。
名付けて「冷静と情熱カラーパレット」~
なんて
いつかの映画のタイトルを借用して
ドーデモいいこと言ってみたりしました。

数値の大小を表すのに
色の濃度や色相の変化を使うことがあります。
例えば、テレビでよく見るサーモグラフィーなどです。
温度が高い方が赤系の色
低い方が青系の色が使われます。
こういったことに使えそうなパレットです。

コードはこちら

冷静と情熱カラーパレットに変更するコード:

Sub macro100218a()
'カラーパレットを変更
'パレットの上から5段目までを変更

    Dim i, r, b As Integer
    Dim MyIndex As Variant
    'ColorIndexが順番になっていないので
    '配列を作ってそこに1段目左から5段目右までの
    'ColorIndexを入れる。
    'その配列を使うことで0から39まで順番に色を設定していける
    MyIndex = Array(1, 53, 52, 51, 49, 11, 55, 56, _
        9, 46, 12, 10, 14, 5, 47, 16, _
        3, 45, 43, 50, 42, 41, 13, 48, _
        7, 44, 6, 4, 8, 33, 54, 15, _
        38, 40, 36, 35, 34, 37, 39, 2)

        For i = 0 To 39
            'r + b = 255の関係
            '255を39分割
            r = Int(255 * i / 39)
            b = 255 - r
            ActiveWorkbook.Colors(MyIndex(i)) = RGB(r, 0, b)
        Next i

End Sub

変更後のパレットです。

Pic20100218c

カラーパレットを変更すると
同じワークブック内で変更前に使った色が
変化してしまうのでご注意を。

規定のカラーパレットに戻す方法はこちらです。

規定のカラーパレットに戻すコード:

Sub macro100218b()
'カラーパレットを規定に戻す

    ActiveWorkbook.ResetColors
   
End Sub

|

« セル内で改行、マクロ自動記録では… | トップページ | 種々のカラーパレット »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: カラーパレットを変更する:

« セル内で改行、マクロ自動記録では… | トップページ | 種々のカラーパレット »