プロが教えるわが家の防犯対策術!

A列の背景色を
B列にR
C列にG
D列にB
を表示したいです。
尚且つ、A列の背景指定が無くなるまでループさせたいです。
マクロ初心者なので、ぜひ教えてください。

A 回答 (2件)

No.1です。


A列のセルは条件付き書式によって色付けされている訳ですね?

Excel的には条件付き書式で色付けされているセルは判断できません。
ただし、お使いのバージョンがExcel2010以降のバージョンであれば「DisplayFormatオブジェクト」が使え、
条件付き書式でも見た目の色が判断できるようになりました。

お使いのバージョンが2010または2013の場合は↓のコードでマクロを実行してみてください。
(今回もA列2行目から「条件付き書式」でセルの色が付いているとします)

Sub Sample2()
Dim i As Long, N As Long, R As Long, G As Long, B As Long
i = 1
Do
i = i + 1
If Cells(i, "A").DisplayFormat.Interior.ColorIndex = xlNone Then Exit Do
N = Cells(i, "A").DisplayFormat.Interior.Color
B = Int(N / 65536)
G = Int((N - B * 65536) / 265)
R = Int(N - B * 65536 - G * 265)
With Cells(i, "B")
.Value = R
.Offset(, 1) = B
.Offset(, 2) = G
End With
Loop
End Sub

※ Excel2007までの場合は別案を考える必要があります。
例えば別セルに手作業で色付きセルの表を作っておき(←条件付き書式で設定した色の数だけ)
あるセルの条件が○の場合は手作業で色を付けたセルを参照、
そのセル色で前回のようなコードを考えるとか・・・

他に良い方法があればごめんなさいね。m(_ _)m
    • good
    • 0
この回答へのお礼

Excel2013なので、出来ました!
本当に本当にありがとうございました!

お礼日時:2015/03/01 23:26

こんばんは!


具体的なRGB値の導き方は↓のURLで紹介されています。

http://officetanaka.net/excel/vba/tips/tips146.htm

このサイトの方法をそのままやってみました。
↓の画像のようにA2セル以降に色塗りセルが連続しているとします。
(「色なし」のセルがあればループを止める)

Sub Sample1()
Dim N As Long, R As Long, B As Long, G As Long
Dim i As Long

i = 1
Do
i = i + 1 '←2行目から
If Cells(i, "A").Interior.ColorIndex = xlNone Then Exit Do
N = Cells(i, "A").Interior.Color
B = Int(N / 65536)
G = Int((N - B * 65536) / 256)
R = N - G * 256 - B * 65536
With Cells(i, "B")
.Value = R
.Offset(, 1) = B
.Offset(, 2) = G
End With
Loop
End Sub

こんな感じではどうでしょうか?m(_ _)m
「ExcelのマクロでRGBを表示したいん」の回答画像1
    • good
    • 0
この回答へのお礼

凄いです!出来ました!ありがとうございます!
更に、お聞きしたいことがあります。
参考サイトを見たのですが、理解が追い付かなくて…
Excelの「条件付き書式」で数値ごとに背景色をつけていると
マクロ実行しても、色を読み取ってRGBを表示しません。
何かいい策がありましたら、ご教授ください( ..)φ

お礼日時:2015/03/01 22:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!