Цвет кодируется следующим образом:
red + 256*green + 65536*blueРазложить цвет на составляющие можно следующим образом:
Red = Color And 255 Green = Color \ 256 And 255 Blue = Color \ 65536 And 255Но это можно сделать и без вычислений. Дело в том что цвет состоит из трех последовательно стоящих байтов, которые вместе представляют собой длинное целое число. Так почему бы это число напрямую не разделить на байты:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (pDst As Any, pSrc As Any, ByVal ByteLen As Long) Private Type RGBType red As Byte green As Byte blue As Byte End Type Private Sub Command1_Click() Dim ColorRGB As RGBType Dim a As Long ' Составляем цвет a = RGB(20, 76, 32) ' Копируем переменную a в переменную ColorRGB CopyMemory ByVal VarPtr(ColorRGB), ByVal VarPtr(a), 3 ' Выводим результат MsgBox ColorRGB.red MsgBox ColorRGB.green MsgBox ColorRGB.blue End Sub