【VBA入門】セルの文字色と背景色を取得、変更する方法

Excelを使うときに多い操作は、罫線で表を作る、文字やセルの背景に色をつける、ではないでしょうか?

VBAで文字や背景に色をつけることができると、とても便利ですよね。本記事では、

  • セルに色を設定する方法
  • セルの色を取得する方法

といった基本的な内容から、

  • セルの色をクリアする方法


といった応用的な内容まで解説します。本記事を読み終える頃には、VBAで文字色やセルの背景色を変えられるようになっていますよ!

セルに色を設定する方法

最初に言葉の整理をしておきます。色をつけたいセルまで移動してペンキのバケツボタンや「A」のボタンをクリックして色をつけます。

1

どちらも色をつけると言ってしまいますが、正しくは以下のとおりです。セルの文字に色をつけるときはセルの文字色を設定するといいます。

セルそのものに色をつけるときはセルの背景色を設定するといいます。以降、これらに従い解説します。

セルの文字色を設定する場合でも、セルの背景色を設定する場合でも、主に2通りの方法があります。

RangeオブジェクトのColorプロパティを使う方法と、ColorIndexプロパティを使う方法です。セルの文字色を設定する場合は、RangeオブジェクトのFontプロパティを指定します。

セルの背景色を設定する場合は、RangeオブジェクトのInteriorプロパティを指定します。それぞれの使い方について、詳しくみていきましょう。

Font.Colorで文字色を設定する方法

セルや範囲を指定し文字色を設定するには、Range.Font.Colorプロパティを使います。Rangeオブジェクトで色を設定したい範囲を記述し、Range.FontプロパティのColorプロパティで色を指定します。

[書式] B2セルの背景色を赤色に設定します。

[使い方] [実行結果]

2

B2セルの文字色を赤色に設定できました。

もちろん、Rangeのカッコの中はRange(“B2:C3”)といった範囲で指定可能です。ここでRGB関数とは何か?という解説をします。

RGB関数とは、色を赤:Red、緑:Green、青:Blueの3つの組み合わせで表現するものです。試しにB2セルを選択し、「A」のマークのボタンにある▼をクリックしてください。

3

画像:スクリーンショット

「その他の色」を選択し、ユーザー設定のタブをクリックしてください。

4

画像:スクリーンショット

赤を選択した状態だと、数値が赤:255・青:0・緑:0となっています。

このことから、RGB関数は、赤青緑をそれぞれ0〜255の数値で表現し、さらに3つを組み合わせて色を表現する関数ということが分かります。

Font.ColorIndexで文字色を設定する方法

色を設定するもう一つの方法についてもみていきましょう。

その方法とは、ColorIndexプロパティを使う方法です。

[書式] 同じようにB2セルの背景色を赤色に設定します。

[使い方] [実行結果]

2

ColorIndexプロパティと色のインデックス番号の指定については、こちらで詳しく解説しています。ぜひ参考にしてください。

Interior.Colorで背景色を設定する方法

セルや範囲を指定し背景色を設定するには、Range.Interior.Colorプロパティを使います。

[書式] 範囲C2:D3の背景色を青色に設定します。

[使い方] [実行結果]

5

範囲C2:D3の背景色に青色を設定できました。

Rangeのカッコの中はRange(“B2”)といったセルでも指定可能です。

Interior.ColorIndexで背景色を設定する方法

ColorIndexプロパティでも背景色を設定してみましょう。

[書式] 範囲C2:D3の背景色を青色に設定します。

[使い方] [実行結果]

5

セルの色を取得する方法

VBAを使って、文字色や背景色を取得できます。

それを何に使うのか?
と思われた方がいらっしゃるかもしれません。例えばこんなケースに使えます。設定する色が決まっていれば問題ありません。

 

しかし「◯◯セルと同じ色に」という場合は、参照するセルごとに設定する色が都度異なる可能性があります。

そんなケースの場合は、

  • 1.セルの色を取得する
  • 2.取得した色で、他のセルの色を設定する

という手順を踏まなくてはなりません。

先ほどと同じように、色の取得を文字色→背景色の順で解説します。

Font.Colorで文字色を取得する方法

セルを指定し文字色を取得するにはRange.Font.Colorプロパティを使います。

[書式] B2セルの文字色(赤色)を取得して、B4セルの文字色に取得した色を設定します。

[使い方] [実行結果]

6

B2セルの文字色を取得し、B4セルの文字色に設定できました。

Font.ColorIndexで文字色を取得する方法

ColorIndexプロパティでも文字色を取得してみましょう。

[書式] 同じようにB2セルの文字色(赤色)を取得して、B4セルの文字色に取得した色を設定します。

[使い方] [実行結果]

6

Interior.Colorで背景色を取得する方法

セルを指定し背景色を取得するには、Range.Interior.Colorプロパティを使います。

[書式] C2セルの背景色を取得し、範囲C4:D5の背景色に設定します。
[実行結果]

7

C2セルの背景色を、範囲C4:D5に設定できました。

Interior.ColorIndexで背景色を取得する方法

ColorIndexプロパティでも背景色を取得してみましょう。

[書式] C2セルの背景色を取得し、範囲C4:D5の背景色に設定します。
[実行結果]

7

セル範囲の色を取得する上での注意点

セル範囲の色を取得する上でいくつか注意点があります。

まず、範囲を指定して文字色を取得することはできません。仮にSample3()において「Range(“B2:B3”).Font.Color」とした場合、この式がNullを返し「実行時エラー’94’; Nullの使い方が不正です」と表示されます。

また、仮にSample4()において、背景色を取得する式を「l = Range(“C2:D3”).Interior.Color」と範囲指定した場合、どうなるでしょうか?

範囲指定した中のセルが全て同じなら、問題なく動作します。ところが範囲内のうち1つでも異なる背景色があると、エラーメッセージは表示されませんが結果はこうなります。

7_1

異なる背景色があると「Range(“C2:D3”).Interior.Color」が黒を意味する0を返すので、背景色を設定する際に黒になってしまいます。

これらを踏まえて、背景色を取得するなら範囲指定にせず、単独のセルで取得するようにしましょう。

セルの色をクリアする方法

指定した範囲の書式すべてをクリアする方法と、文字色か背景色のいずれかをクリアする方法を順に解説します。

ClearFormatsで色と書式をクリアする方法

範囲を指定して書式すべてをクリアするには、Range.ClearFormatsメソッドを使います。

[書式] 範囲A1:D3の書式をクリアします。

[使い方] [実行結果]

8

範囲A1:D3の書式(つまり文字色と背景色)をクリアできました。

Font.Colorで文字色をクリアする方法

文字色をクリアするには、Range.Font.Colorプロパティを使います。クリアするというのは、色パレットで「黒」を選択するのと同じ意味です。

[書式] B4セルの文字色をクリアします。

[使い方] [実行結果]

9

B4セルの文字色をクリアできました。Rangeのカッコの中は、Range(“B4:D5”)といった範囲の指定も可能です。

Font.ColorIndexで文字色をクリアする方法

Range.Font.ColorIndexプロパティを使うこともできます。この場合クリアするというのは、インデックス番号を0で指定するのと同じ意味です。

[書式] B4セルの文字色をクリアします。

[使い方] [実行結果]

9

Interior.Colorで背景色をクリアする方法

背景色をクリアするには、Range.Interior.Colorプロパティを使います。背景色を「白」で指定してクリアします。

[書式] 範囲C4:D5の背景色をクリアします。

[使い方] [実行結果]

Color01

範囲C4:D5の背景色をクリアできました。

ただし、背景色を「白」にしていますので、罫線まで白色になっていますRangeのカッコの中は、Range(“B4”)といったセルの指定も可能です。

Interior.ColorIndexで背景色をクリアする方法

背景色をクリアするには、Range.Interior.ColorIndexプロパティを使う方が適しています。文字色をクリアする場合と同じようにインデックス番号を0で指定します。

[書式] 同じように範囲C4:D5の背景色をクリアします。

[使い方] [実行結果]

10

このようにColorIndexプロパティを0で指定すると罫線の色も元の色に戻すことができます。

まとめ

この記事では、セルの文字色や背景色を設定・クリアする方法を解説しました。

業務で頻繁に行っている定型作業に対し、解説してきたことが適用できそうなら、ぜひVBAで自動化してみてください。

セルの文字色や背景色を設定・クリアする方法を忘れたときは、この記事を思い出してくださいね!

Excel VBAを最短で習得したい方へ

元々ITリテラシーの高い方やプログラムの学び方がわかっている方であれば、この記事通りに進めていけば、Excel VBAを独学で習得することができるでしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「なかなかやり遂げられ無い、挫折してしまった」
「時間が足りない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決することができない」

このような悩みを抱えている方も少なく無いと思います。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、より深くExcel VBAについて学習することできます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方やカリキュラムを考えてみませんか?

Excel VBAならではの学習方法や、現役エンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta2_vba2

LINEで送る
Pocket

書いた人

本多 農

本多 農

関西在住のITエンジニアです。普通の会社に勤務しながら、侍エンジニアのインストラクター、ライターとして活動しています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説