• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【Excelマクロ】 セルの色取得)

【Excelマクロ】セルの色取得方法と表示先設定について

このQ&Aのポイント
  • 古いファイルを加工する際、セルに塗られている色を調べる作業が面倒です。この記事では、RGB値をマクロで表示させる方法を解説します。
  • セルの色を取得するマクロをご紹介します。特定のセルにカーソルを置いた状態で実行すると、そのセルの色のRGB値が別のセルに表示されます。
  • 表示させたいセルを自由に設定したい場合や、複数のセルを一括で処理したい場合についても解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.1

以下で試してみてください。 Sub 色情報取得選択したセルの右に表示() Dim r As Long Dim g As Long Dim b As Long n = Selection.Interior.Color r = n \ 256 ^ 0 Mod 256 g = n \ 256 ^ 1 Mod 256 b = n \ 256 ^ 2 Mod 256 Selection.Offset(0, 1).Value = r & "," & g & "," & b End Sub Sub 色情報取得選択したセルの下に表示() Dim r As Long Dim g As Long Dim b As Long n = Selection.Interior.Color r = n \ 256 ^ 0 Mod 256 g = n \ 256 ^ 1 Mod 256 b = n \ 256 ^ 2 Mod 256 Selection.Offset(1, 0).Value = r & "," & g & "," & b End Sub Sub 色情報取得選択した複数セル右と下に表示() Dim r As Long Dim g As Long Dim b As Long Dim mRng As Range For Each mRng In Selection n = mRng.Interior.Color r = n \ 256 ^ 0 Mod 256 g = n \ 256 ^ 1 Mod 256 b = n \ 256 ^ 2 Mod 256 mRng.Offset(0, 1).Value = r & "," & g & "," & b mRng.Offset(1, 0).Value = r & "," & g & "," & b Next End Sub

KO1014
質問者

お礼

ご回答ありがとうございました。 希望1.はSelection.Offsetで自由に設定できました。 ただ、希望2の複数セルを選択した状態でマクロを実行するとすべて「0,0,0」が表示されてしまいました。 複数セルの一括処理は無理でしょうか?

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1725/2595)
回答No.3

> ただ、希望2の複数セルを選択した状態でマクロを実行するとすべて「0,0,0」が表示されてしまいました。 画像の様な状態になります。 B3,B7,C5を選択して実行した結果です。

KO1014
質問者

お礼

再度のご回答ありがとうございました。 3つ目のマクロを実行したところ、正しく表示されました。 上2つのマクロも複数セル一括処理できるものと勘違いしておりました。 大変失礼しました。 大変助かりました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

何を聞いているのかよく判らない。 やりたいことを、エクセルの言葉を使って、文章で説明してみて。 ーー 連続セルの各セルを捉えるのは、常識的に、 Sub test05() Dim cl As Range For Each cl In ActiveSheet.Range("a1:A3") cl.Offset(0, 1) = cl.Address Next End Sub のようにFor Each でやればすむことでは。 同行右列に情報を書き出すなら、例えばA列の範囲を対象に横セルに書き出すためには上記のようなことになろう。 でもB列が何か情報があるだろうから、どうする? 別シートの同番地対応のセルに書き出すとしても、対比が見にくくなるだろう。 思い付きだが、各セルのコメントに(R,G,Bの3値をカンマで区切りで)入れるというのもできなくはない。セルに文字情報がないセルならセルの値として、R,G,Bの3値をカンマで区切りで入れるとか。

関連するQ&A

専門家に質問してみよう