Visual Basic Excel 字体颜色
Visual Basic Excel Font Color
我想确定当前单元格的颜色。
当我
Debug.Print ActiveCell.Font.Color
我找回了一个号码。在这种情况下 24832
鉴于我只有这个数字,如何确定该颜色的正确 RGB 值?
是否有一些函数可以将 int 转换为 RGB(0,0,0)?
没有内置的 VBA 到 RGB 的转换,您需要自己编写。
试试这个
Function ColorToRgb(Color As Variant) As Variant
' return #Value Error for invalid colors
If Color < 0 Or Color > 16777215 Then
ColorToRgb = CVErr(xlErrValue)
End If
ReDim Res(1 To 3) As Variant
' Treating Color as a 24 bit number
Res(1) = Color Mod 256 ' Red value: left most 8 bits
Res(2) = Color \ 256 Mod 256 ' Green value: middle 8 bits
Res(3) = Color \ 65536 Mod 256 ' Blue value: right most 8 bits
ColorToRgb = Res
End Function
这是一个更快的 RGB 分量位掩码:
Function RGBComp(Clr As Variant) As Variant
If Clr >= 0 Or Clr <= 16777215 Then
RGBComp = Array(Clr And &HFF, (Clr And &HFF00&) \ &H100&, (Clr And &HFF0000) \ &H10000)
Else
RGBComp = CVErr(xlErrValue)
End If
End Function
我想确定当前单元格的颜色。 当我
Debug.Print ActiveCell.Font.Color
我找回了一个号码。在这种情况下 24832
鉴于我只有这个数字,如何确定该颜色的正确 RGB 值?
是否有一些函数可以将 int 转换为 RGB(0,0,0)?
没有内置的 VBA 到 RGB 的转换,您需要自己编写。
试试这个
Function ColorToRgb(Color As Variant) As Variant
' return #Value Error for invalid colors
If Color < 0 Or Color > 16777215 Then
ColorToRgb = CVErr(xlErrValue)
End If
ReDim Res(1 To 3) As Variant
' Treating Color as a 24 bit number
Res(1) = Color Mod 256 ' Red value: left most 8 bits
Res(2) = Color \ 256 Mod 256 ' Green value: middle 8 bits
Res(3) = Color \ 65536 Mod 256 ' Blue value: right most 8 bits
ColorToRgb = Res
End Function
这是一个更快的 RGB 分量位掩码:
Function RGBComp(Clr As Variant) As Variant
If Clr >= 0 Or Clr <= 16777215 Then
RGBComp = Array(Clr And &HFF, (Clr And &HFF00&) \ &H100&, (Clr And &HFF0000) \ &H10000)
Else
RGBComp = CVErr(xlErrValue)
End If
End Function