セルをカラーコードで着色する
Excelで色のリストを作っていると、左の図のようにわかりやすく、その色で表示したくなります、よね?そんなときはVBAで一気に着色してしまいましょう。
早速ですが、実現するVBAのコードはこちら。
使い方はまずVisual Basic Editorを起動して標準モジュールを追加し(こちらを参照)、追加されたモジュールに下のソースコードをコピペしてください。Excelに戻り、カラーリングしたい範囲を選択してから、Alt+F8を押します。「セルのカラーコードで着色」というマクロが追加されているはずなので、それを選択して[実行]します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Sub セルのカラーコードで着色() Dim i As Integer Dim val As String Dim r As Integer, g As Integer, b As Integer For i = 1 To Selection.Count 'セルに書かれたカラーコードを取得 val = Replace(Selection.Cells(i).Value, "#", "") If (Len(val) = 6) Then 'RGB各色を整数に変換 r = Hex2Dec(Mid(val, 1, 2)) g = Hex2Dec(Mid(val, 3, 2)) b = Hex2Dec(Mid(val, 5, 2)) '背景色が暗い場合は文字を白に変える If ((r + g + b) < 512) Then Selection.Cells(i).Font.ColorIndex = 2 Else Selection.Cells(i).Font.ColorIndex = 1 End If 'セルの塗り色を変更 Selection.Cells(i).Interior.Color = RGB(r, g, b) End If Next End Sub '2文字の16進数文字列(FF, 8Aなど)を整数に変換 Private Function Hex2Dec(Value As String) As Integer Hex2Dec = CInt("&H" & Value) End Function |
このVBAの肝は標準のRGB関数と最後に追加したHex2Dec関数です。
VBAでもRGB関数を使えば色を自由に指定できます。もちろん24bitカラーの範囲ですけど。この関数はその名の通り、R, G, Bの各色を0~255で渡してやれば、Excelのセルや文字に設定できる値に変換してくれます。
Hex2Dec関数は11-13行目で切り出した2桁ずつのカラーコードに”&H”を付加してVisual Basicが16進数文字列と認識するようにしてからCIntに渡し、整数値を取得しています。
最後までお読みいただきありがとうございました m(_ _)m
スポンサーリンク
スポンサーリンク