1/02/2018

Excel。テーマの色の設定値ってこんな風になっているんですね。【Theme color】

Excel。テーマの色の設定値ってこんな風になっているんですね。

<VBA>

セルを塗りつぶすときに、マクロVBAだと、vbRedというように、
設定することもできますが、この使い方だと、
標準の色しか使うことができません。

折角テーマの色というのがあるので、それを使うとした場合、
どのようにしたら、マクロVBAで設定することができるのか、
確認していきましょう。

カラーパレットをみると、テーマの色を基本として、
その白や黒を加えたグラデーションのように配置されています。

わかりやすいように、カラーパレットに番号を振って確認してみましょう。

まず、1行目の1~10までが基準になっています。
マクロVBAでのコードは次のようになっています。

背景1(1)→xlThemeColorDark1
テキスト1(2)→xlThemeColorLight1
背景2(3)→xlThemeColorDark2
テキスト2(4)→xlThemeColorLight2
アクセント1(5)→xlThemeColorAccent1
アクセント2(6)→xlThemeColorAccent2
アクセント3(7)→xlThemeColorAccent3
アクセント4(8)→xlThemeColorAccent4
アクセント5(9)→xlThemeColorAccent5
アクセント6(10)→xlThemeColorAccent6

なお、1番は、マウスをのせると、ポップアップされるヒントには、
「白、背景1」と背景1の前に色名がついていますが、
テーマが変わると、その色名は変わってしまいますので、
背景1の部分だけ記載しています。

では実際にM2にアクセント6の塗りつぶしを設定するマクロVBAを作ってみます。

Sub テーマの色()
    Range("m2").Interior.ThemeColor = xlThemeColorAccent6
End Sub

実行してみると、

M2にアクセント6が設定することが出来ましたね。

Interior.ThemeColor= xlThemeColorAccent6というプロパティですが、
Interior.がセルを塗りつぶすプロパティで、
ThemeColor= xlThemeColorAccent6は、
「塗りつぶす色は、テーマカラーのアクセント6と」いう意味ですね。

さて、2行目以降11~20はどのように設定されているのでしょうか?
11番は、「背景1 黒+基本色5%」
20番は、「アクセント6 白+基本色80%」
というようになっていますね。

先程の1行目の1~10までの色にプラスされている形です。

では実際にM3に20番は、
「アクセント6 白+基本色80%」の塗りつぶしを設定するマクロVBAを作ってみます。

Sub テーマの色()
    Range("m3").Interior.ThemeColor = xlThemeColorAccent6
    Range("m3").Interior.TintAndShade = 0.8
End Sub

では実行してみます。

まず、テーマの色を設定して、
そのアクセントの明るさを設定するという流れの構文です。

TintAndShadeプロパティは、-1=黒・1=白というような設定値が用意されています。

TintAndShade = 0.8の0.8は、
白+基本色80%なので、白だから『+(プラス)』そして80%なので、『0.8』。

プラスは省略するので、TintAndShade = 0.8とすることで、
カラーパレットの20番の色を使うことが出来るという仕組みです。

設定値を詳細に表すと次のようになります。

そして、この設定値はここにあるだけではなくて、調整することができます。

例えば、黒+基本色70%というのは、ありませんが作ることが出来るわけですね。

Sub テーマの色()
    Range("q3").Interior.ThemeColor = xlThemeColorAccent6
    Range("q3").Interior.TintAndShade = -0.7
End Sub

通常のExcelでは出来ないことも
マクロVBAを使うことで表現することも可能になります。