2015-01-11 2 views
2

현재 셀의 색을 결정하고 싶습니다. 언제 내가Visual Basic Excel 글꼴 색

Debug.Print ActiveCell.Font.Color 

나는 다시 전화를받습니다. 이 경우 24832
이 숫자 만 있으면이 색상의 적절한 RGB 값을 어떻게 결정합니까?
int를 RGB (0,0,0)로 바꾸는 함수가 있습니까?

+0

글꼴이 예에서는 무슨 색? –

+0

바이너리가 무엇인지, 실제로 헥스를 알고 있습니까? 24832를 16 진수 (16 진수)로 변환하면이 글꼴의 색이 맞습니까? –

+0

24832 (기수 10) = 0000 0000 0110 0001 0000 0000 (기수 2) = 006100 (기수 16) .. 진한 파란색 글꼴 색상입니까? –

답변

4

RGB에 내장 된 VBA 변환이 없으므로 직접 작성해야합니다.

는 시도이

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 
+0

좋아요. 그 정수 값의 배경은 색상 값으로 무엇입니까? ColorIndex가 적용되지 않는 것 같습니다. –

+0

흠 .. 완전성을 위해 여기서하고있는 일에 대해 자세히 설명해 주실 수 있습니까? –

+0

인라인 코멘트로 설명 추가 –

1

이 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 
관련 문제