【VBA】ColorIndexで文字やセルの色を取得・設定する方法を解説

  • 2024.12.27
       
【VBA】ColorIndexで文字やセルの色を取得・設定する

Excelで作業をしていると、文字色やセルの背景色を一括で変えたい場合や、特定のセルから色を取得したい場合がよくありますよね。
VBAには、色を指定・取得するための「ColorIndex」というプロパティが存在します。
今回は、ColorIndexプロパティの使い方について詳しく解説していきたいと思います。

ColorIndexプロパティとは

ColorIndexプロパティは、もともとOffice 2003以前の旧式カラーパレットの色を指定するために用意されていたプロパティです。Office 2007以降はカラーパレットの仕様が変更されていますが、2003以前と同様にプロパティの使用は可能となっています。

ColorIndexで指定できる色は全部で56色あり、それぞれの色にインデックス番号が割り振られているため、その番号をプロパティに設定することで対応する色を指定することができます。

各番号で指定できる色は、以下の表の通りです。

ColorIndex RGB(赤, 緑, 青)
1
  
RGB(0,0,0)
2
  
RGB(255,255,255)
3
  
RGB(255,0,0)
4
  
RGB(0,255,0)
5
  
RGB(0,0,255)
6
  
RGB(255,255,0)
7
  
RGB(255,0,255)
8
  
RGB(0,255,255)
9
  
RGB(128,0,0)
10
  
RGB(0,128,0)
11
  
RGB(0,0,128)
12
  
RGB(128,128,0)
13
  
RGB(128,0,128)
14
  
RGB(0,128,128)
15
  
RGB(192,192,192)
16
  
RGB(128,128,128)
17
  
RGB(153,153,255)
18
  
RGB(153,51,102)
19
  
RGB(255,255,204)
20
  
RGB(204,255,255)
21
  
RGB(102,0,102)
22
  
RGB(255,128,128)
23
  
RGB(0,102,204)
24
  
RGB(204,204,255)
25
  
RGB(0,0,128)
26
  
RGB(255,0,255)
27
  
RGB(255,255,0)
28
  
RGB(0,255,255)
29
  
RGB(128,0,128)
30
  
RGB(128,0,0)
31
  
RGB(0,128,128)
32
  
RGB(0,0,255)
33
  
RGB(0,204,255)
34
  
RGB(204,255,255)
35
  
RGB(204,255,204)
36
  
RGB(255,255,153)
37
  
RGB(153,204,255)
38
  
RGB(255,153,204)
39
  
RGB(204,153,255)
40
  
RGB(255,204,153)
41
  
RGB(51,102,255)
42
  
RGB(51,204,204)
43
  
RGB(153,204,0)
44
  
RGB(255,204,0)
45
  
RGB(255,153,0)
46
  
RGB(255,102,0)
47
  
RGB(102,102,153)
48
  
RGB(150,150,150)
49
  
RGB(0,51,102)
50
  
RGB(51,153,102)
51
  
RGB(0,51,0)
52
  
RGB(51,51,0)
53
  
RGB(153,51,0)
54
  
RGB(153,51,102)
55
  
RGB(51,51,153)
56
  
RGB(51,51,51)

なお、インデックス番号は厳密には色そのものではなく、カラーパレットの位置に対応しています。

例えば、デフォルトの状態では1で指定できる色は黒になりますが、カラーパレットの設定を変更して黒から赤に変更した場合、1で指定できる色も赤に変わります。

そのため、上の表はあくまでデフォルトの場合の対応表になります。

ColorIndexで色を設定する

ColorIndexプロパティを使用して、文字やセル背景、あるいはシート見出しの色を設定することができます。

それぞれの指定方法について見ていきましょう。

Fontで文字色を設定する

文字色を設定する場合は、RangeオブジェクトFontプロパティを使用します。

【基本構文】

Range("セル範囲").Font.ColorIndex = インデックス番号

【サンプルコード】

Sub sampleFont()

    Range("B2").Font.ColorIndex = 3

End Sub

【実行結果】

デフォルトのパレットでは、3番の位置には赤色が配色されています。
ColorIndexで3を指定しているので、文字色も赤色に変化しました。

Interiorでセルの背景色を設定する

セルの背景色を設定する場合は、RangeオブジェクトのInteriorプロパティを使用します。

【基本構文】

Range("セル範囲").Interior.ColorIndex = インデックス番号

今度は、セルの背景を赤色に設定してみます。

【サンプルコード】

Sub sampleInterior()

    Range("B2").Interior.ColorIndex = 3

End Sub

【実行結果】

Tabでシートの見出しの色を設定する

シート見出しの色を設定する場合は、WorksheetオブジェクトのTabプロパティを使用します。

【基本構文】

Worksheets("シート名").Tab.ColorIndex = インデックス番号

【サンプルコード】

Sub sampleTab()

    Worksheets("Sheet1").Tab.ColorIndex = 3

End Sub

【実行結果】

ColorIndexで色のインデックス番号を取得する

ColorIndexは色の変更だけでなく、設定済みの情報を取得するのにも使えます。
詳しく見ていきましょう。

Fontで文字色のインデックス番号を取得する

まずは、設定されている文字色のインデックス番号を取得してみましょう。

以下にサンプルコードを用意しました。

【サンプルコード】

Sub sampleFontColor()

    Dim colorNum As Integer
    colorNum = Range("B2").Font.ColorIndex

    MsgBox "インデックス番号:" & colorNum

End Sub

【実行結果】

Font.ColorIndexで文字色のインデックス番号が返されるので、それを変数に代入しています。

Interiorでセルの背景色のインデックス番号を取得する

次は、セルの背景色を取得してみます。

以下がサンプルコードです。

【サンプルコード】

Sub sampleInteriorColor()

    Dim colorNum As Integer
    colorNum = Range("B2").Interior.ColorIndex

    MsgBox "インデックス番号:" & colorNum

End Sub

【実行結果】

まとめ

今回は、ColorIndexの使用方法について解説をしてきました。

カラーパレットの配色はファイルごとに編集が可能なため、よく使う色を事前に設定して使うと管理が楽になります。上手く使いこなして、作業を効率化させていきましょう!

関連記事

VBAの勉強方法は?

書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。

ただ、VBAに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。

プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。

<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~

このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。

     

Otherカテゴリの最新記事