今回は、VBAにてRGB形式でカラー番号を取得するマクロを作成しました。
1つ目は、セルを指定してセルの背景色を取得するマクロになっています。
型を統一するため関数の戻り値は文字列型(String)となっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
'使用例)Color_to_RGB(Cells,"red") Function Color_to_RGB(ByVal Target As Range, ByVal ColorType As String) As String Dim ColorNum As Long If Not Target.Count = 1 Then Exit Sub If IsError(Target) Then Exit Sub Select Case StrConv(ColorType, vbLowerCase) Case "red": Color_to_RGB = CStr(ColorNum Mod 256) Case "green": Color_to_RGB = CStr(Int(ColorNum / 256) Mod 256) Case "blue": Color_to_RGB = CStr(Int(ColorNum / 256 / 256)) Case "rgb": Color_to_RGB = CStr("RGB(" & ColorNum Mod 256 & _ "," & Int(ColorNum / 256) Mod 256 & _ "," & Int(ColorNum / 256 / 256) & ")") Case Else: Color_to_RGB = Empty End Select End Function |
2つ目は、カラー番号から取得するマクロになっています。
こちらは、Typeを使用することで、それぞれで異なる型を宣言することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
'Typeにてそれぞれの変数の型宣言。使用例)Color_to_RGB(Num).Red Type RGBNumber Red As Byte Green As Byte Blue As Byte RGB As String End Type Function Color_to_RGB(ByVal ColorNum As Long) As RGBNumber With Color_to_RGB .Red = ColorNum Mod 256 .Green = Int(ColorNum / 256) Mod 256 .Blue = Int(ColorNum / 256 / 256) .RGB = "RGB(" & .Red & "," & .Green & "," & .Blue & ")" End With End Function |
1 2 |
'2つ目のマクロよりアクティブセルから赤色のカラーナンバーを取得 Color_to_RGB(ActiveCell.Interior.Color).Red |
---コメント---