VBAでセルの背景色などの色を取得すると数値型で値で返ってきます。
例えば、紫色(#7030A0)だと以下のような数値が返ってきます。
10498160
今回は取得した色を、カラーコードやRGBに変換する方法について説明していきます。
色を変換するコード
色をRGBに変換する
''' <summary>
''' 色をRGBに変換する
''' </summary>
''' <returns>RGB値(R,G,B)</returns>
''' <remarks></remarks>
Function GetColorToRGB(ByVal color As Long) As Variant
Dim colorCode As String: colorCode = Hex(color)
Dim i As Integer
For i = Len(colorCode) To 5
colorCode = "0" & colorCode
Next
GetColorToRGB = Array(Val("&H" & Mid(colorCode, 5, 2)), Val("&H" & Mid(colorCode, 3, 2)), Val("&H" & Mid(colorCode, 1, 2)))
End Function
色をカラーコードに変換する
''' <summary>
'''色をカラーコードに変換する
''' </summary>
''' <param name="color">色情報(数値)</param>
''' <returns>カラーコード</returns>
''' <remarks></remarks>
''' ''' <summary>
Function GetColorToCode(ByVal color As Long)
Dim colorCode As String: colorCode = Hex(color)
Dim i As Integer
For i = Len(colorCode) To 5
colorCode = "0" & colorCode
Next
GetColorToCode = Mid(colorCode, 5, 2) & Mid(colorCode, 3, 2) & Mid(colorCode, 1, 2)
End Function
使用例
選択されたセルの背景色をRGBとカラーコードに変換するコードです。
Sub Macro1()
With Selection.Interior
Debug.Print "RGB:" & Join(GetColorToRGB(.color), ",")
Debug.Print "#" & GetColorToCode(.color)
End With
End Sub