エクセル VBA【配色テーマ Office】セルの塗り テーマの色からRGB(赤・緑・青)を取得

【本日のミッション】

Excel VBA にて、配色テーマを「Office」に設定しているファイルの、セルの塗りつぶしからテーマの色のRGB(赤・緑・青)を取得せよ。

ミッションの概要

Excel VBA にて、配色テーマを「Office」に設定しているファイルの、セルの塗りつぶしからテーマの色のRGB(赤・緑・青)を取得せよ、というのが今回のミッションです。

リボン「ページレイアウト」タブの「テーマ」ー「配色」を「Office」に設定してしているエクセルファイルが対象です。

エクセル VBA【配色テーマ Office】セルの塗り テーマの色からRGB(赤・緑・青)を取得

「テーマの色」の5列目ブルーから10列目グリーンの、1~6行目の色をエクセルのセルに塗りました。

エクセル VBA【配色テーマ Office】セルの塗り テーマの色からRGB(赤・緑・青)を取得

縦×横並びの「テーマの色」を縦1列に並び変えて塗っています。

エクセル VBA【配色テーマ Office】セルの塗り テーマの色からRGB(赤・緑・青)を取得

それぞれのカラーの、テーマの色(ThemeColor)と色の明暗(TintAndShade)とRGBの数値を取得していきましょう。

テーマの色・色の明暗取得についてはこちらをご覧ください。
参照: エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

エクセル VBA【配色テーマ Office】セルの塗り テーマの色からRGB(赤・緑・青)を取得

■■■スポンサーリンク■■■

プロシージャ

Sub テーマの色からRGBを取得()

    Dim t_row As Long     '処理対象行
    Dim MyColor As Long   'Colorプロパティ

    For t_row = 2 To 37
        MyColor = Cells(t_row, 2).Interior.Color                 'Colorプロパティ
        Cells(t_row, 3) = Cells(t_row, 2).Interior.ThemeColor    'テーマの色
        Cells(t_row, 4) = WorksheetFunction.Round(Cells(t_row, 2).Interior.TintAndShade, 2) ’色の明暗
        Cells(t_row, 5) = MyColor Mod 256                'R
        Cells(t_row, 6) = Int(MyColor / 256) Mod 256     'G
        Cells(t_row, 7) = Int(MyColor / 256 / 256)       'B
    Next t_row
End Sub

アクティブなシートのB列2~37行目の塗りつぶしのテーマの色(ThemeColor)をC列に、色の明暗(TintAndShade)をD列に、RGB(赤・緑・青)の数値をE~G列に取得するコードです。

エクセル VBA【配色テーマ Office】セルの塗り テーマの色からRGB(赤・緑・青)を取得

■■■スポンサーリンク■■■

RGB取得の計算方法

RGBの値を得るのに、Interior.Colorプロパティの数値を使用します。

似たような名前でColorIndexプロパティがありますが、こちらは56色の表現しかできません。なので、RGBの数値取得には使用できません。

RGBの計算方法は、それぞれ下記の通りになります。

R(赤)= Interior.Colorの数値 Mod 256
G(緑)= Int(Interior.Colorの数値/256) Mod 256
B(青)= Int(Interior.Colorの数値/256/256)

今回は Interior.Colorの数値 を変数 MyColor に入れているので、下記のコードになっています。

R(赤)= MyColor Mod 256
G(緑)= Int(MyColor/256) Mod 256
B(青)= Int(MyColor/256/256)

逆にInterior.Colorプロパティの数値を求める計算方法は下記の通りになります。

Interior.Colorプロパティの数値 = R(赤)+G(緑)× 256+B(青)× 256 × 256

セルの塗りのRGBの値の確認方法

セルの塗りのRGBは、下記方法で確認することができます。

[ホーム]タブ-[フォント]-[塗りつぶしの色]の「その他の色」をクリックします。

エクセル VBA【配色テーマ Office】セルの塗り テーマの色からRGB(赤・緑・青)を取得

色の設定ダイアログの[ユーザー設定]タブで、赤(R)=91、緑(G)=155、青(B)=213と、それぞれの数値が確認できます。

エクセル VBA【配色テーマ Office】セルの塗り テーマの色からRGB(赤・緑・青)を取得

参照

系列が1つのグラフを自動大量連続作成(Excel ーBA)
「実行時エラー 1004」を出さずに、ワークシート内のグラフを「グラフ 元」以外全て削除(Excel VBA)
グラフの参照先を変えると勝手にグラフの色が変わる現象を解決せよ
系列が複数あるグラフを自動大量連続作成(Excel VBA)
n行毎の改ページ設定 「実行時エラー1004 RangeクラスのPageBreakプロパティを設定できません」の原因(Excel VBA)
参照データ数が異なる・参照先が変動する月別グラフを自動大量連続作成(Excel VBA)
複数系列・参照データ数が異なる・参照先が変動する月別グラフを自動大量連続作成(Excel VBA)
大量の画像やグラフ等のオブジェクトで画面表示が遅いのを解決(Excel)
エクセル シートに画像が存在するかどうか(有無)を調べる方法(Excel VBA)
エクセルシート上 全てのオブジェクト(画像・図形・グラフ等)を選択し、削除する(Excel VBA)
エクセルシート上のオブジェクト(図形・画像・グラフ等)の件数を数える方法(Excel VBA)
エクセル シートにグラフが存在するかどうか(有無)を調べる方法(Excel VBA)
エクセル シートに図形が存在するかどうか(有無)を調べる方法(Excel VBA)
エクセル 選択しているセル範囲に写真が存在しているか(有無)を確認(Excel VBA)
エクセル 選択しているセル範囲にグラフが存在しているか(有無)を確認(Excel VBA)
エクセル 選択しているセル範囲に図形が存在しているか(有無)を確認(Excel VBA)
エクセル 選択セル範囲の写真を削除する(Excel VBA)
エクセル 選択セル範囲のグラフを削除する(Excel VBA)
エクセル 選択セル範囲の図形を削除する(Excel VBA)
Excel VBAでワードを起動して文字を入力操作(Excel VBA)
Excel VBAでワードを起動してエクセルの表をワードに貼付け(Excel VBA)
Excel VBAでワードを起動して エクセルのエクセルの表を図としてワードに貼付け(Excel VBA)
Word コピー貼付けした図が白い枠だけ?図が表示されない現象を解決
Excel VBAでワードを起動して グラフをワードに図として貼付け(Excel VBA)
エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得
エクセル VBA【配色テーマ Office 2007 – 2010】セルの塗りつぶしのテーマの色・色の明暗を取得
エクセル VBA セルの塗りつぶしに【配色テーマ Office】の色を設定(Excel VBA)
エクセル VBA セルの塗りつぶしに【配色テーマ Office 2007-2010】の色を設定(Excel VBA)
エクセル VBA【配色テーマ Office】セルの塗り テーマの色からRGB(赤・緑・青)を取得

■■■スポンサーリンク■■■