从范围获取文本颜色

时间:2013-05-26 23:51:00

标签: c# excel com add-in

我正在用C#写一个excel插件,除了其他一些东西,我需要得到一个单元格的textcolor(如果可能的话,用RGB)。

Range确实有一个Font.Color属性,但这只是一个双重,我不知道如何转换为rgb表示 - 实际上不知道它代表什么(可怕的文档,我所有的东西)害怕,或者我正在寻找错误的地方)

似乎无法在网上找到这方面的任何示例,只有如何设置颜色的示例,但使用ColorTranslator.FromOle(而不是ToOle)不起作用,因为它需要一个int ..

2 个答案:

答案 0 :(得分:2)

我稍微修改了this code以获得:

Sub test()
    Dim Col As Long
    Dim R As Long, G As Long, B As Long
    Col = ActiveCell.Font.Color

    R = Col Mod 256
    G = (Col \ 256) Mod 256
    B = (Col \ 256 \ 256) Mod 256
    Debug.Print R
    Debug.Print G
    Debug.Print B
End Sub

以下是Chip Pearson的一些有趣内容。

答案 1 :(得分:0)

那么我们去吧,仔细检查这些值会发现Font.Color的两倍实际上只存储整数RGB值。

这样可以正常工作,因为IEEE-754双精度数可以精确地存储小于2 ** 53的所有整数,因此我们对任何RGBA值的舍入都没有任何问题。对我来说似乎仍然是一个奇怪的错误,不知道发生了什么。