【VBA】セルの操作(セル背景・文字の色の取得・変更)

Excel・VBA

今回は、セルの書式に関わる設定の中で、セル背景の色・文字の色に関する内容について紹介します。

【今回の内容】
1.セル背景・文字の色を取得する方法
2.セル背景・文字の色 を変更する方法

※文字の色を変更する方法いついては、文字書式の記事でも紹介しています。

まずは、指定したたセル背景・文字の色に関する情報を取得する方法についてです。

セル背景・文字色を取得する

指定したセルの色を取得する方法は、 ColorIndex でエクセルのカラーパレットの番号を取得する方法ColorでRGB関数の色を取得する2通りがあります。まずは、ColorIndexによる取得方法から説明します。

ColorIndexでセル背景・文字の色を取得する

まず、カラーパレットとは何かですが、カラーパレットとはエクセルでセル・文字の色を変更するときによく目にする↓です。

カラーパレット

ColorIndexによる取得では、上記のパレットの番号を取得します。

《ColorIndexによるパレット番号の取得方法》
【文字色の取得】変数 = 指定したセル.Font.ColorIndex
【セル色の取得】変数 = 指定したセル.Interior.ColorIndex

となります。カラーパレットに登録できる色の数は56色ですので使用する変数は、整数型の”Integer”で宣言します。

Colorでセル背景・文字の色を取得する

Colorで取得できる数値は、RGB関数で表される3つの数値を一つにまとめたものとなります。まずは数値の取得方法についてです。数値の取得は次のように書きます。

《ColorによるRGB関数の数値取得方法》
【文字色の取得】変数 = 指定したセル.Font.color
【セル色の取得】変数 = 指定したセル.Interior.color

となります。色の数値は大きめの整数で取得されるため、長整数型の”Long”で宣言します。

色情報をこのまま他のセルに設定したい場合はこのままで十分ですが、取得した色情報を少し変更したい場合には、R・G・Bそれぞれの値を取得する必要があります。

上記で取得した数値をR・G・Bに分ける方法について、次のようして取得します。

《Colorで取得した数値をR・G・Bに分ける方法》
 変数 = 指定したセル.Interior.Color
【Rの取得】 変数1 = 変数 Mod 256
【Gの取得】 変数2 = Int(変数 / 256) Mod 256
【Bの取得】 変数3 = Int(変数 / 256 / 256) Mod 256

文字色の場合は最初の変数で数値を取得する際に.Font.Colorとします。

セル・文字の色を変更する

セル・文字の色を変更する方法です。セル・文字の色を変更する方法もColorIndx番号によるものと、RGB関数の値で変更する方法の2通りとなります。

ColorIndexでセル・文字色を変更する

ColorIndex番号を用いてセル・文字の色を変更する方法です。次のように書きます。

《ColorIndexを利用したセル背景・文字色の変更方法》
【文字色の変更】指定したセル.Font.ColorIndex = ColorIndex番号
【セル色の変更】指定したセル.Interior.ColorIndex = ColorIndex番号

RGB関数でセル・文字色を変更する

RGB関数での色の変更方法は次のように書きます。

《RGB関数によるセル背景・文字色の変更方法》
【文字色の変更】指定したセル.Font.Color = RGB(R,G,B)
【セル色の変更】指定したセル.Interior.Color = RGB(R,G,B)
 R(赤色):0~255の整数
 G(緑色):0~255の整数
 B(青色):0~255の整数

セルの指定の仕方

セルの指定方法について説明します。

セル・文字色の情報を取得する場合は、範囲指定はできないので注意してください。色の情報を取得する場合は、任意のセル一つだけを選択します。

《セル・文字色情報を取得するセルを指定する方法》
 Cells(行番号,列番号)

一方で、セル・文字色を変更する場合は、任意のセル一つだけでなく、任意の範囲をまとめて指定することができます。

《セル・文字色を変更するセルを範囲を指定する方法》
 1.任意のセル一つの場合:Cells(行番号,列番号)
 2.任意の範囲を指定する:Range(Cells(左上の行番号, 左上の 列番号),Cells(右下の行番号,右下の列番号))

セルの操作(セル背景・文字の色の取得・変更)まとめ

セル背景・文字色の取得・変更方法についてColorIndexによるカラーパレットの番号を取得・変更する方法と、ColorによるRGB関数の数値を取得・変更する方法の2通りを説明しました。エクセルでの操作上はカラーパレットが便利かもしれませんが、VBAでセル・文字色を操作する場合には、RGB関数での操作をお勧めします。

これは、カラーパレットがユーザーによって異なる可能性があるため、ユーザーによっては意図した色とは異なる配色となってしまう可能性があるのに対し、RGB関数であれば絶対的な指定となりますので、同じ数値を指定してもユーザーごとに配色が異なるといったことはないからです。

コメント

タイトルとURLをコピーしました