■92175 / inTopicNo.7) |
Re[5]: Excelの条件付き書式 |
□投稿者/ 魔界の仮面弁士 (2341回)-(2019/08/30(Fri) 14:54:31)
|
■No92173 (奈保子 さん) に返信 > このグラデーションバーのRGB値をプログラムで取得したいのです。 > 左から右までを256諧調で取得できたらうれしいです。
それは、何のために必要としているのでしょうか?
グラデーション描画が目的ならば、下記のような処理を書けます。 https://dobon.net/vb/dotnet/graphics/lineargradientbrush.html
それとも、Excel の物と完全に同じ色で無いと困るのでしょうか。
条件付き書式のグラデーションを、256 諧調で直接得る方法はありませんが、 0〜255 までの連番をセルに記録して 3 色スケール条件付き書式を設定しておき、 それを No92168 の方法で調べれば、色番号が得られるでしょう。
C# で書くとオブジェクト解放の手間が面倒なので… Excel VBA で書いてみました。
Dim ws As Excel.Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1")
'連番0〜255を設定 ws.[A1:E1].Value = Array("値", "R", "G", "B", "RGB") ws.[A2].Value = 0 ws.[A2].AutoFill ws.[A2:A257], xlFillSeries
'3色スケールを設定 Dim cs As Excel.ColorScale ws.[A2:A257].FormatConditions.Delete Set cs = ws.[A2:A257].FormatConditions.AddColorScale(3) '' 色指定しない場合は既定のグラデーション色 'cs.ColorScaleCriteria(1).FormatColor.Color = &H6B69F8 'cs.ColorScaleCriteria(2).FormatColor.Color = &H84EBFF 'cs.ColorScaleCriteria(3).FormatColor.Color = &H7BBE63 ' 3 色スケールの R,G,B 値を取得 Dim r As Integer, c As OLE_COLOR For r = 2 To 257 c = ws.Cells(r, 1).DisplayFormat.Interior.Color ws.Cells(r, 5).Value = c ws.Cells(r, 2).Value = (c And &HFF&) ws.Cells(r, 3).Value = (c And &HFF00&) \ &H100& ws.Cells(r, 4).Value = (c And &HFF0000) \ &H10000 Next
C# だと面倒なので Excel VBA で書きますが、つまりはこんな感じ。
あるいは 3 色それぞれを混ぜ合わせて、自分で色を計算するとか。
|
|