【本日のミッション】
Excel VBA にて、配色テーマを「Office」に設定しているファイルのセルに、「Office」のテーマの色・色の明暗を設定せよ。
目次
ミッションの概要
Excel VBA にて、配色テーマを「Office」に設定しているファイルのセルに、「Office」のテーマの色・色の明暗を設定せよ、というのが今回のミッションです。
リボン「ページレイアウト」タブの「テーマ」ー「配色」を「Office」に設定してしている場合のミッションです。
エクセル VBA セルの塗りつぶしに【配色テーマ Office 2007-2010】の色を設定(Excel VBA)ではテーマを「Office 2007 – 2010」にして設定しましたが、同じマクロのコードを使用して、テーマの違いで設定される色や明暗がどのように変化するか確認します。
「テーマの色」の5列目ブルーから10列目グリーンの、1~6行目の色をエクセルのセルに設定します。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
結論としては、テーマが「Office 2007 – 2010」の時は「Office 2007 – 2010」のテーマの色、「Office」の時は「Office」のテーマの色になります。
↓参考:エクセル VBA セルの塗りつぶしに【配色テーマ Office 2007-2010】の色を設定(Excel VBA)
プロシージャ
Sub テーマの色設定() '【変数】 Dim t_row As Long '処理対象行 Dim t_col As Long '処理対象列 Dim MyColor As Integer 'テーマの色 Dim shd As Double '色の明暗 MyColor = 5 'テーマの色 初期値 For t_row = 1 To 6 '処理対象行 For t_col = 1 To 6 '処理対象列 '色の明暗 設定 Select Case t_row Case 1 shd = 0 Case 2 shd = 0.8 Case 3 shd = 0.6 Case 4 shd = 0.4 Case 5 shd = -0.25 Case 6 shd = -0.5 End Select Cells(t_row, t_col).Interior.ThemeColor = MyColor 'テーマの色 Cells(t_row, t_col).Interior.TintAndShade = shd '色の明暗 'テーマの色 変更 If MyColor = 10 Then MyColor = 5 Else MyColor = MyColor + 1 End If Next t_col Next t_row End Sub
アクティブなシートのセルA1~F6の塗りつぶしに、カラーパレットのテーマの色(ThemeColor)・色の明暗(TintAndShade)を設定するコードです。
Interior.ThemeColor プロパティ
色を設定する
対象となるオブジェクトに色を設定します。
オブジェクト.Interior.ThemeColor = テーマの色
今回は、対象セルに変数「MyColor」のテーマの色を設定しています。
Cells(t_row, t_col).Interior.ThemeColor = MyColor
【テーマの色設定の流れ】
初めに初期値としてテーマの色「5」を設定しておきます。
MyColor = 5
1セルの処理を終えるたびに、テーマの色「MyColor」に「1」を加え、 「10」の処理を終えたら「5」に戻しています。
If MyColor = 10 Then MyColor = 5 Else MyColor = MyColor + 1 End if
色を取得する
対象となるオブジェクトの、テーマの色を取得します。
オブジェクト.Interior.ThemeColor
下記はセルA1の塗りつぶしのテーマの色を取得し、その番号をセルB2に書き出しています。
Range("B2") = Range("A1").Interior.ThemeColor
詳しくはコチラをご参照ください。
エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得
エクセル VBA【配色テーマ Office 2007 – 2010】セルの塗りつぶしのテーマの色・色の明暗を取得
Interior.TintAndShade プロパティ
色の明暗を設定する
対象となるオブジェクトの明暗を設定します。
オブジェクト.Interior.TintAndShade = 色の明暗
今回は、対象セルに変数「MyColor」のテーマの色、変数「shd」の色の明暗を設定しています。
Cells(t_row, t_col).Interior.ThemeColor = MyColor Cells(t_row, t_col).Interior.TintAndShade = shd
【色の明暗設定の流れ】
行番号「t_row」が「1」の時は、色の明暗「shd」を「0」に設定。
行番号「t_row」が「2」の時は、色の明暗「shd」を「0.8」に設定。
行番号「t_row」が「3」の時は、色の明暗「shd」を「0.6」に設定。
行番号「t_row」が「4」の時は、色の明暗「shd」を「0.4」に設定。
行番号「t_row」が「5」の時は、色の明暗「shd」を「-0.25」に設定。
行番号「t_row」が「6」の時は、色の明暗「shd」を「-0.5」に設定。
Select Case t_row Case 1 shd = 0 Case 2 shd = 0.8 Case 3 shd = 0.6 Case 4 shd = 0.4 Case 5 shd = -0.25 Case 6 shd = -0.5 End Select
色の明暗を取得する
対象となるオブジェクトの色の明暗を取得します。
色の明暗は、-1 (最も暗い) から 1 (最も明るい) の数値で表現されます。0 (ゼロ) は中間の明暗になります。
オブジェクト.Interior.TintAndShade
下記はセルA1の塗りつぶしのテーマの色を取得し、その番号をセルB2に、色の明暗を取得し、その数値をセルB3に書き出しています。
Range("B2") = Range("A1").Interior.ThemeColor Range("B3") = WorksheetFunction.Round(Range("A1").Interior.TintAndShade, 2)
詳しくはコチラをご参照ください。
エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得
エクセル VBA【配色テーマ Office 2007 – 2010】セルの塗りつぶしのテーマの色・色の明暗を取得
参照
系列が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)
エクセル VBA【配色テーマ Office】セルの塗りつぶしのテーマの色・色の明暗を取得
エクセル VBA【配色テーマ Office 2007 – 2010】セルの塗りつぶしのテーマの色・色の明暗を取得
エクセル VBA セルの塗りつぶしに【配色テーマ Office】の色を設定(Excel VBA)