酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Excel.XlColorIndexの標準カラーのインデックスの値

Excel.XlColorIndexはRGB値ではなく、標準カラーパレットのインデックス値で持っています。インデックス値をRGB値に変換してみました。

Public Function ColorIndexToRGB(ByVal xlColorIndex As Integer) As Integer() 

        Dim ht As New Hashtable

        '                         ↓↓左からR、G、B値
        ht.Add(1,  New Integer() {&HFF, &H0,  &H0,  &H0 })
        ht.Add(2,  New Integer() {&HFF, &HFF, &HFF, &HFF})
        ht.Add(3,  New Integer() {&HFF, &HFF, &H0,  &H0 })
        ht.Add(4,  New Integer() {&HFF, &H0,  &HFF, &H0 })
        ht.Add(5,  New Integer() {&HFF, &H0,  &H0,  &HFF})
        ht.Add(6,  New Integer() {&HFF, &HFF, &HFF, &H0 })
        ht.Add(7,  New Integer() {&HFF, &HFF, &H0,  &HFF})
        ht.Add(8,  New Integer() {&HFF, &H0,  &HFF, &HFF})
        ht.Add(9,  New Integer() {&HFF, &H80, &H0,  &H0 })
        ht.Add(10, New Integer() {&HFF, &H0,  &H80, &H0 })
        ht.Add(11, New Integer() {&HFF, &H0,  &H0,  &H80})
        ht.Add(12, New Integer() {&HFF, &H80, &H80, &H0 })
        ht.Add(13, New Integer() {&HFF, &H80, &H0,  &H80})
        ht.Add(14, New Integer() {&HFF, &H0,  &H80, &H80})
        ht.Add(15, New Integer() {&HFF, &HC0, &HC0, &HC0})
        ht.Add(16, New Integer() {&HFF, &H80, &H80, &H80})
        ht.Add(33, New Integer() {&HFF, &H0,  &HCC, &HFF})
        ht.Add(34, New Integer() {&HFF, &HCC, &HFF, &HFF})
        ht.Add(35, New Integer() {&HFF, &HCC, &HFF, &HCC})
        ht.Add(36, New Integer() {&HFF, &HFF, &HFF, &H99})
        ht.Add(37, New Integer() {&HFF, &H99, &HCC, &HFF})
        ht.Add(38, New Integer() {&HFF, &HFF, &H99, &HCC})
        ht.Add(39, New Integer() {&HFF, &HCC, &H99, &HFF})
        ht.Add(40, New Integer() {&HFF, &HFF, &HCC, &H99})
        ht.Add(41, New Integer() {&HFF, &H33, &H66, &HFF})
        ht.Add(42, New Integer() {&HFF, &H33, &HCC, &HCC})
        ht.Add(43, New Integer() {&HFF, &H99, &HCC, &H0 })
        ht.Add(44, New Integer() {&HFF, &HFF, &HCC, &H0 })
        ht.Add(45, New Integer() {&HFF, &HFF, &H99, &H0 })
        ht.Add(46, New Integer() {&HFF, &HFF, &H66, &H0 })
        ht.Add(47, New Integer() {&HFF, &H66, &H66, &H99})
        ht.Add(48, New Integer() {&HFF, &H96, &H96, &H96})
        ht.Add(49, New Integer() {&HFF, &H0,  &H33, &H66})
        ht.Add(50, New Integer() {&HFF, &H33, &H99, &H66})
        ht.Add(51, New Integer() {&HFF, &H0,  &H33, &H0 })
        ht.Add(52, New Integer() {&HFF, &H33, &H33, &H0 })
        ht.Add(53, New Integer() {&HFF, &H99, &H33, &H0 })
        ht.Add(54, New Integer() {&HFF, &H99, &H33, &H66})
        ht.Add(55, New Integer() {&HFF, &H33, &H33, &H99})
        ht.Add(56, New Integer() {&HFF, &H33, &H33, &H33}) 

        Return ht(xlColorIndex)
    End Function 

xlColorIndexAutomaticは-4105、xlColorIndexNoneは-4142なのですが、これらに関しては変換していません。でも標準カラーパレットの色が変わったらどうしようかなぁ……

別の方法で取得する事を考えなきゃ。