午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

エクセル2007アドイン、セルの塗りつぶしとフォントのパレット作ってみた、その14

続き

RGBの変更をアクティブセルだけから選択セル範囲にした
RGBの表示
 
選択セル範囲のRGB変更

f:id:gogowaten:20191015152137p:plain

f:id:gogowaten:20191015152150p:plain

昨日のはアクティブセルだけにした理由があったはずなんだけど
思い出せないので選択セル範囲にした
 
RGBの表示変更のタイミングを増やした

f:id:gogowaten:20191015152205p:plain

RGB変更ボタンを押しておいてセルに色を付けると
 
f:id:gogowaten:20191015152222p:plain
塗った色の数値に変化(RGB表示)する
選択セルを変更しても変化しない、変化するのは
パレットで色を付けた時
 
 

f:id:gogowaten:20191015152240p:plain

TintAndShadeの方も同じようにボタンを押しておくと表示が変わる
 
 
ダウンロード
ファイル名 午後のパレット_20141127.zip
ダウンロード先1
ダウンロード先2(ヤフーボックス)
 
 
困ったのがリアルタイムにしたら色を取得するたびに色が変化してしまうこと
処理の流れは
RGBを取得してからTintAndShadeを取得する
取得するとテキストボックスの数値が変化する
テキストボックスの数値が変化したらセルの色もそれに設定される
こうなっている
取得した値をまた設定するのは無駄なんだけど設定するテキストボックスを
そのまま表示にも使っているのでこうなっている
取得した値と設定する値は同じなんだから色は変化しないはずなんだけど
実際は変化するので調べた
 
セルを赤(255,0,0)で塗る、TintAndShadeは設定しないので基準の0になる
そこからTintAndShadeを0から0.3に変更すると
RGBも変化して(255,77,77)になる
だからセルの色の情報はRGB(255,77,77)とTintAndShadeが0.3になる
この色を最初からセルに設定して塗ろうとすると
RGB(255,77,77)にしてTintAndShadeを0.3にすればいいと考えるんだけど
違う色になる

f:id:gogowaten:20191015152344p:plain

実際にセルの色の情報はどうなっているのか
Set iro = ActiveCell.Interior
で変数iroに色の情報を入れて中を覗いてみると

f:id:gogowaten:20191015152437p:plain

全く同じRGBの値なのにTintAndShadeは違う値になっている
色の見た目は全く同じ、RGB通り、ややこしい
 
さっきの色を取得するたびに色が変化してしまうっていうのに戻って
上の画像のA’の色を取得して表示しようとすると
RGB(255,77,77)のTintAndShade=0.3に設定されるので
A’の色は明らかに違うB’のいろになってしまう
正解はRGB(255,77,77)のTintAndShade=0に設定
エクセルさんには0.3ですよって言われるけど0が正解、常に0が正解
 
つまりTintAndShadeの値は設定する時は反映されるけど
取得するときに示される値は無視されているってことか
 
結果
処理はセルの色の設定がテーマカラーの場合だけTintAndShadeを使うことにして
RGBカラーの場合はTintAndShadeの値が設定されていても0で上書きすることにした
というかTintAndShadeの表示は意味が無い気がしてきた…
テーマカラーの時しか有効ではないしテーマカラーのセルでもRGBの値を
変更したらその時点でテーマカラーではなくRGBカラーになるし
 
関連記事
次回
 
前回