|
▼ドカ さん:こんにちは〜
>対応表などあるのでしょうか?
ヒントです。
新規Bookを作成し、まずSheet1 でテストです。
'準備 : [A1]より下のセルを10個程度 色塗りしておきます
Sub testSheet1()
Const 行数 = 10
Dim a(1 To 行数, 1 To 2)
Dim c As Range
Dim i&
For Each c In Range("A1:A" & 行数)
i = i + 1
a(i, 1) = c.Interior.ColorIndex
a(i, 2) = "'" & Right$( _
"0000000" & Hex$(c.Interior.Color), 8)
Next
[B1].Resize(行数, 2).Value = a
End Sub
実行すると、B列とC列にこんなようなデータが出力されます:
B列 C列
6 0000FFFF
43 0000CC99
33 00FFCC00
40 0099CCFF
44 0000CCFF
38 00CC99FF
3 000000FF
9 00000080
1 00000000
15 00C0C0C0
これは、コードを見て分かるように、A列のColorIndex と Color を
となりのセルに表示したものです。
意味は たとえば 2行目 [A2]のColorIndex は 43 で その Color値は
&H0000CC99 であるということです。
&H0000CC99 は 右から(お尻から)1バイトずつとりだすと RGB値に
なります。 R=99 G=CC B=00 (16進表記) です。
Colorが &h00CC99FF なら R=FF, G=99, B=CC ということです。
もうひとつ、こんどは Sheet2 で実験です。
(こんどは 前準備は要りません)
Sub testSheet2()
Dim i&, y&
For i = 0 To 15
y = i + 1
Cells(y, 1).Interior.Color = QBColor(i)
Cells(y, 2).Value = i
Cells(y, 3).Value = "'" & Right$( _
"0000000" & Hex$(Cells(y, 1).Interior.Color), 8)
Next
End Sub
これを実行しますと A列が16セル塗りつぶされ、
B列 C列
0 00000000
1 00800000
2 00008000
3 00808000
4 00000080
5 00800080
6 00008080
7 00C0C0C0
8 00808080
9 00FF0000
10 0000FF00
11 00FFFF00
12 000000FF
13 00FF00FF
14 0000FFFF
15 00FFFFFF
のような出力が得られます。
このB列が QBColor()関数で、C列は例によってA列の色をColorプロパティで
取得し、それを16進表記したものです。
たとえば Yellow のQBColor番号 は 14 で そのColorは &h0000FFFF ですから、
RGB値は R=FF, G=FF, B=00 ということになります。
|
|