エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

【本日のミッション】

Excel VBAにて、既存の折れ線グラフ系列の線色をテーマの色【Office】36色に変更せよ。

ミッションの概要

Excel VBAにて、既存の折れ線グラフ系列の線色をテーマの色【Office】36色に変更せよ、というのが今回のミッションです。

実は今回のミッション、テーマの色を完璧に再現することができませんでした。

エクセル VBA セルの塗りつぶしに【配色テーマ Office】の色を設定(Excel VBA)と同じ考えで作ってみたのですが、RGBの値が微妙に違っていました。
RGBが同じ値になっていても、テーマの色として認識されていないようです。
限りなく近い色での再現になりますが、参考までにご覧ください。

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

エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

任意の色に設定した折れ線グラフ「グラフ 1」の系列の線色を・・・

エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
テーマの色【Office】36色に変更します。エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

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

プロシージャ

アクティブシートの折れ線グラフ「グラフ 1」の線色を、テーマの色【Office】36色に変更するコードです。

Sub 折れ線グラフをテーマの色36色に変更()

    '【変数】
    Dim cht As Chart        '処理対象グラフ
    Dim ser As Long         '系列
    Dim MyColor As Integer  'テーマの色
    Dim shd As Double       '色の明暗

    '■変数セット
    Set cht = ActiveSheet.ChartObjects("グラフ 1").Chart   '処理対象グラフ

    '■テーマの色の初期値
    MyColor = 5

    '■グラフの系列を順に処理
    For ser = 1 To cht.SeriesCollection.Count

        '■色の明暗 設定
        Select Case ser
            Case Is <= 6
                shd = 0
            Case Is <= 12
                shd = 0.8
            Case Is <= 18
                shd = 0.6
            Case Is <= 24
                shd = 0.4
            Case Is <= 30
                shd = -0.25
            Case Else
                shd = -0.5
        End Select

        '■グラフ線色を変更
        cht.SeriesCollection(ser).Format.Line.ForeColor.ObjectThemeColor = MyColor  'テーマの色
        cht.SeriesCollection(ser).Format.Line.ForeColor.Brightness = shd            '色の明暗
        
        '■テーマの色 変更
        If MyColor = 10 Then
            MyColor = 5
        Else
            MyColor = MyColor + 1
        End If
    Next
End Sub

グラフの色は左から5番目~10番目を使用します。
エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

色の明暗は、上から順に使用します。

エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

▼グラフに使用している色の順番です。
エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

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

SeriesCollection.Format.Lineプロパティ

系列「SeriesCollection」の、線の書式を設定するためのオブジェクトを返します。

SeriesCollection.Format.Line

テーマの色を設定
ForeColor.ObjectThemeColorプロパティ

オブジェクトにテーマの色を設定します。

オブジェクト.ForeColor.ObjectThemeColor = テーマの色

今回は系列 SeriesCollection の1~36番目(変数:ser)の線色に、変数「MyColor」に入れたテーマの色を設定しています。

cht.SeriesCollection(ser).Format.Line.ForeColor.ObjectThemeColor = MyColor

テーマの色には、カラーパレットの並んでいる順の番号を指定します。
今回は、5番目から10番目の色を使用しています。

エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

なんでテーマの色に番号を使うの?という疑問をお持ちの方は、こちらの記事をご覧ください。
エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得

【色の変更方法】

初めに変数「MyColor」に初期値の「5」を設定します。

MyColor = 5

1系列の処理を終えるたびに、テーマの色「MyColor」に「1」を加え、 「10」の処理を終えたら「5」に戻しています。

If MyColor = 10 Then
    MyColor = 5
Else
    MyColor = MyColor + 1
End If

処理される順番は下記のようになります。
エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

明暗を設定
ForeColor.Brightnessプロパティ

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

オブジェクト.ForeColor.Brightness = 色の明暗

今回は系列 SeriesCollection の1~36番目(変数:ser)の線色にテーマの色変数「MyColor」、色の明暗変数「shd」を設定しています。

cht.SeriesCollection(ser).Format.Line.ForeColor.ObjectThemeColor = MyColor
cht.SeriesCollection(ser).Format.Line.ForeColor.Brightness = shd

エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

【色の明暗設定の流れ】

系列の順番変数「ser」が6以下の時は、色の明暗「shd」を「0」に設定。
系列の順番変数「ser」が12以下の時は、色の明暗「shd」を「0.8」に設定。
系列の順番変数「ser」が18以下の時は、色の明暗「shd」を「0.6」に設定。
系列の順番変数「ser」が24以下の時は、色の明暗「shd」を「0.4」に設定。
系列の順番変数「ser」が30以下の時は、色の明暗「shd」を「-0.25」に設定。
系列の順番変数「ser」が上記以外の時は、色の明暗「shd」を「-0.5」に設定。

Select Case ser
    Case Is <= 6
        shd = 0
    Case Is <= 12
        shd = 0.8
    Case Is <= 18
        shd = 0.6
    Case Is <= 24
        shd = 0.4
    Case Is <= 30
        shd = -0.25
    Case Else
        shd = -0.5
End Select

エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

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

テーマの配色を変えてもグラフの線色は変わりません

今回と同様の手法でセルにテーマの色を設定した場合、テーマの配色を変更するとテーマの影響を受けて色が変わってしまいます。
参考:エクセル VBA セルの塗りつぶしに【配色テーマ Office】の色を設定(Excel VBA)
参考:エクセル VBA セルの塗りつぶしに【配色テーマ Office 2007-2010】の色を設定(Excel VBA)

しかし、今回の処理でグラフの線色を変更した場合、テーマの配色を変更しても線色は変わりませんでした。「テーマの色に限りなく近い色」のため、テーマの配色の影響は受けないようです。

エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
テーマの色には影響されません。
エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

参照

系列が1つのグラフを自動大量連続作成(Excel VBA)
「実行時エラー 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)
Excel VBAでワードを起動して 複数のグラフをワードに図として貼付け(Excel VBA)
エクセル VBA グラフにタイトルを追加する(Excel VBA)
エクセル VBA グラフのタイトルテキストを取得する(Excel VBA)
エクセル VBA グラフに凡例を追加する(Excel VBA)
エクセル VBA グラフオブジェクトの名前を変更する(Excel VBA)
エクセルVBA アクティブなグラフからChartObjectを変数にセット(Excel VBA)
エクセル VBA アクティブなグラフの名前を取得する(Excel VBA)
エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得
エクセル VBA【配色テーマ Office 2007 – 2010】セルの塗りつぶしのテーマの色・色の明暗を取得
エクセル VBA セルの塗りつぶしに【配色テーマ Office】の色を設定(Excel VBA)
エクセル VBA セルの塗りつぶしに【配色テーマ Office 2007-2010】の色を設定(Excel VBA)
エクセル VBA【配色テーマ Office】セルの塗り テーマの色からRGB(赤・緑・青)を取得
エクセル VBA【配色テーマ Office 2007-2010】セルの塗り テーマの色からRGB(赤・緑・青)を取得
エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】6色に変更する
エクセル VBA 折れ線グラフの線色をテーマの色【Office 2007 – 2010】6色に変更する
エクセル VBA 折れ線グラフ系列の線色をテーマの色【Office】36色に変更する

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