我正在用C#写一个excel插件,除了其他一些东西,我需要得到一个单元格的textcolor(如果可能的话,用RGB)。
Range确实有一个Font.Color属性,但这只是一个双重,我不知道如何转换为rgb表示 - 实际上不知道它代表什么(可怕的文档,我所有的东西)害怕,或者我正在寻找错误的地方)
似乎无法在网上找到这方面的任何示例,只有如何设置颜色的示例,但使用ColorTranslator.FromOle
(而不是ToOle)不起作用,因为它需要一个int ..
答案 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值的舍入都没有任何问题。对我来说似乎仍然是一个奇怪的错误,不知道发生了什么。