VBA(Microsoft Excel)の公式カラー名
Excelは、56色で構成されるカラーパレットを使用します。 [セルの書式設定]ダイアログボックスの[パターン]タブを表示すると、これらの色を確認できます。
VBAでマクロを作成するときは、定数を使用して、これらの色を名前で参照することをお勧めします。
残念ながら、ExcelのVBAには、パレットの56色ごとに定義された定数がありません。名前で定義されている唯一の色はColorConstantsクラスのメンバーであり、クラスにはvbBlack、vbWhite、vbRed、vbGreen、vbBlue、vbYellow、vbMagenta、vbCyanの8つのメンバーがあります。
VBAでは、ColorIndexプロパティを使用して、Excelのパレットから使用する色を定義できます。問題は、ColorIndexが色ではないことです。パレットへのインデックスです。したがって、ColorIndex 1はパレットの最初の色、2は2番目の色というように続きます。次のURLのサンプルコードを見ると、これが実際に動作していることがわかります。
http://www.ozgrid.com/VBA/ReturnCellColor.htm
このコードは、セルのColorIndexプロパティを調べて、色の名前を返します。ただし、返される名前は色の定数ではありません。これは、そのインデックスのパレットがどの色であるかを説明するだけです。
セルの色を設定する場合は、実際にはColorプロパティを使用する必要があります。このプロパティを使用すると、前述の8つのVBA色定数を使用できます。これらのColorプロパティを使用してセルの内部色を設定すると、8つの名前付き色が1〜8のColorIndex値に対応することがわかります。次のマクロはこれをうまく示しています。
Sub CheckColors() Dim arr8Colors As Variant Dim i As Integer arr8Colors = Array( _ vbBlack, vbWhite, vbRed, vbGreen, _ vbBlue, vbYellow, vbMagenta, vbCyan) For i = 0 To 7 Selection.Offset(i, 0).Interior.Color = arr8Colors(i) Selection.Offset(i, 1).Value = Selection.Offset(i, 0).Interior.ColorIndex Next i End Sub
ColorとColorIndexの間の最初の8つの値のこの対応は、Excelで8色(VBA定数で定義された8色)しか使用できなかった時代にさかのぼり、履歴の成果物としてのみ解釈する必要があります。セルに他の色を指定する場合は、次に示すように、RGB関数を使用してColorプロパティを指定する必要があります。
Selection.Interior.Color = RGB(128, 64, 255)
RGB関数を使用すると、任意の色の赤、緑、および青のコンポーネントを指定できます。各コンポーネントの値の範囲は0〜255です。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(2778)は、Microsoft Excel 97、2000、2002、および2003に適用されます。