エクセル2007アドイン、セルの塗りつぶしとフォントのパレット作ってみた、その11
続き
アクティブセルのTintAndShadeの表示
アクティブセルのTintAndShadeの指定
今のブックの配色のパレットを取得するときにワークシートを消費しない
赤枠のとこが追加したもの
それだけ、確認用
TintAndShadeの変更
基本はスライダーで変更
隣のテキストボックに直接数値を入れてもセルの色は変更されるけど
スライダーが連動しないのは仕様
有効な数値は-1から1まで
途中でセルを変更しても数値は取得しないので
セルを変更して数値変更する前にトグルボタンを押し直すか
さっきのTintAndShade表示ボタンを押すといいかも
ワークシートを消費しない
現在のブックのテーマのパレットを取得するボタン
エクセル2007以外のテーマやユーザー定義の配色のパレットを取得するときはそのブックにシートを1枚挿入してそこにテーマの色で塗って色を取得して
取得し終わったらそのシートを削除していたけど
シートを消費しなくても色を取得する方法を思いついて何とかうまくできた
エクセルさんに今のテーマのパレットの60色全部教えてッと言っても
教えてくれるのは基準になる10色だけ、テーマの名前も教えてくれない
赤枠が基準になる10色
名前が左からDark1、Light1、Dark2、Light2、Accent1~Accent6
ここで一番左の白がダークで隣の黒の名前がライトなのは逆じゃないの?って思う
それはいいとして
残りの50色(それぞれの5色)はTintAndShadeの値を変更して表示されている
基準色が0でそこから-1から1までの値
このTintAndShadeの値はパレットの色の場所で決まっていると思っていた
基準色が0でその一行下が0.8、その下が0.6とか
これが違っていていろいろ調べた結果
変化のパターンが5つあって、どのパターンが使われるかは色による
そしてその判別法もわかった(つもり)
エクセルさんは基準色は教えてくれるんだから、その判別法を使えば
シートを消費しなくても60色全て取得できるはず
ってことで作ってみたんだけど…違う、Dark1とLight1が逆、Dark2とLight2が逆
何回見なおしても合っているはず、同じはずなのに色が入れ替わってる
入れ替わってるなら入れ替え直せばいいだけなんだけど
単純なことだけに納得行かなくてまた調べた結果
msoThemeColorとxlThemeColorは
指定と取得では同じ名前の色でも違う色になる具体的にはDark1、Light1、Dark2、Light2の色が入れ替わる
エクセルさんに今のブックの基準色は何色ですかと聞くときに使うのが
A6セルに書いてある
ActiveWorkbook.Theme.ThemeColorScheme.Colors(xlThemeColorDark1)
Dark1の色は何色ですか?
エクセルさん「黒ですよ」
エクセルさんにセルの色をDark1にしてもらう時は
A5セルに書いてある
ThemeColor = xlThemeColorDark1
Dark1の色で塗ってください
エクセルさん 「白」
やっぱり納得できない
シートを消費する方法では色を塗って塗られた色を取得していたから白で
今回の方法はシートを使わないで直接聞いたから黒だったわけ
でもそうやって色が入れ替わるのはDarkとLightだけでAccentは同じでかなり混乱
以前も指摘したけど紛らわしい
そうだとしたら午後のパレットは本当にエクセル2007専用になってしまう
シートを消費するのは前から気になっていたので
それを解消できたのは嬉しい
ダウンロード
ファイル名 午後のパレット_20141124.zip
ダウンロード先1
エクセル2007アドイン - OneDrive
ダウンロード先2(ヤフーボックス)
この記事の続きは
エクセル2007アドイン、セルの塗りつぶしとフォントのパレット作ってみた、その12 - 午後わてんのブログ - Yahoo!ブログ