エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

【本日のミッション】

Excel VBA にて、配色テーマを「Office」に設定しているファイルの、セルの塗りつぶしのテーマの色・色の明暗を取得せよ。

ミッションの概要

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

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

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

エクセル VBA【配色テーマ office 2007 – 2010】セルの塗りつぶしのテーマの色・色の明暗を取得ではテーマを「Office」に設定して取得しましたが、同じマクロコードを使用して、テーマの違いで取得される値に変化があるか確認します。

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

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

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

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

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

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

結論としては、テーマが「Office」でも「Office 2007 – 2010」でも、色の見た目は異なりますが、取得されるテーマの色(ThemeColor)と色の明暗(TintAndShade)は同じになります。

↓参考:エクセル VBA【配色テーマ office 2007 – 2010】セルの塗りつぶしのテーマの色・色の明暗を取得

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

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

プロシージャ

Sub テーマの色取得()

    Dim t_row As Long '処理対象行

    For t_row = 2 To 37
        Cells(t_row, 3) = Cells(t_row, 2).Interior.ThemeColor    'テーマの色
        Cells(t_row, 4) = WorksheetFunction.Round(Cells(t_row, 2).Interior.TintAndShade, 2) ’色の明暗
    Next t_row
End Sub

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

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

Interior.ThemeColor プロパティ

色を取得する

対象となるオブジェクトの、テーマの色を取得します。

オブジェクト.Interior.ThemeColor

今回は2列目のセルの塗りつぶしのテーマの色を取得し、その番号を3列目に書き出しています。

Cells(t_row, 3) = Cells(t_row, 2).Interior.ThemeColor

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

取得した数字を見ていると、テーマの色パレットの列番号がテーマの色の番号になっているようですね。

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

色を設定する

対象となるオブジェクトに色を設定します。

オブジェクト.Interior.ThemeColor = テーマの色

下記は、セルA1にテーマの色パレットの5列目の色を設定しています。

Range("A1").Interior.ThemeColor = 5

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

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

Interior.TintAndShade プロパティ

色の明暗を取得する

対象となるオブジェクトの色の明暗を取得します。
色の明暗は、-1 (最も暗い) から 1 (最も明るい) の数値で表現されます。
0 (ゼロ) は中間の明暗になります。

オブジェクト.Interior.TintAndShade

今回は2列目のセルの塗りつぶしの明暗を取得し、その値の小数点第3位を四捨五入して4列目に書き出しています。

Cells(t_row, 4) = WorksheetFunction.Round(Cells(t_row, 2).Interior.TintAndShade, 2)

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

取得したテーマの色の明暗を、テーマの色パレットで確認するとこんな感じですね。

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

色の明暗を設定する

対象となるオブジェクトの明暗を設定します。

オブジェクト.Interior.TintAndShade = 色の明暗

下記は、セルA1にテーマの色パレットの6列目の色を設定し、3行目の色の明暗「0.6」に設定しています。

With Range("A1").Interior
    .ThemeColor = 6      'テーマの色
    .TintAndShade = 0.6  '色の明暗
End With

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

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

参照

系列が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】セルの塗りつぶしのテーマの色・色の明暗を取得

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