codememo

VBA를 사용하여 Excel의 조건부 서식에서 배경색을 가져오는 방법

tipmemo 2023. 5. 18. 21:05
반응형

VBA를 사용하여 Excel의 조건부 서식에서 배경색을 가져오는 방법

저는 제 VBA 스크립트에서 엑셀의 조건부 포맷 규칙을 사용하여 할당된 셀 배경색을 얻고 싶습니다.저는 사용하는 것을 깨달았습니다.Range.Interior.Color속성에 Excel의 적용된 조건부 서식 기능으로 인한 색상이 없습니다.

저는 조사를 좀 했고 여기서 이 먼 을 발견했습니다. 컴파일되고 실행되지만 할당된 색상을 얻지 못했습니다. [항상 (255,255)]

Excel 2016을 사용하고 있는데, 내장된 VBA 기능을 사용하거나 다른 Excel 트릭을 사용하여 이 정보를 쉽게 얻을 수 있는 방법이 있는지 궁금합니다.

조건부 서식 규칙(CFR)에 의해 색상이 지정된 셀의 색상을 알고자 하는 경우Range.DisplayFormat.Interior.Color¹.

만약 당신이 어떤 색의 셀이 CFR에 의해 색칠되었을 수도 있고 그렇지 않을 도 있는 것을 확실히 알고 싶다면 당신은 그 셀에 영향을 미칠 수 있는 CFR을 반복하고 각각을 살펴봐야 합니다.Range.FormatConditions(*x*).Interior.Color.

설명서: range.DisplayFormat

¹ Note: .DisplayFormat is not available for a worksheet UDF.

아래 코드는 조건부 형식을 사용하든 그렇지 않든 범위의 HEX 및 RGB 값을 제공합니다.조건부 서식을 사용하여 범위를 포맷하지 않고 Excel의 iColor 기능을 UDF로 사용하려는 경우.작동이 안될 거에요.MSDN의 아래 발췌문을 읽으십시오.

DisplayFormat 속성은 사용자 정의 함수에서 작동하지 않습니다.예를 들어 셀의 내부 색상을 반환하는 워크시트 함수에서 다음과 유사한 선을 사용하는 경우:

Range.DisplayFormat.Interior.ColorIndex

그런 다음 워크시트 함수를 실행하여 #VALUE! 오류를 반환합니다.

Public Function iColor(rng As Range, Optional formatType As String) As Variant
'formatType: Hex for #RRGGBB, RGB for (R, G, B) and IDX for VBA Color Index
    Dim colorVal As Variant
    colorVal = rng.DisplayFormat.Interior.Color
    Select Case UCase(formatType)
        Case "HEX"
            iColor = "#" & Format(Hex(colorVal Mod 256),"00") & _
                           Format(Hex((colorVal \ 256) Mod 256),"00") & _
                           Format(Hex((colorVal \ 65536)),"00")
        Case "RGB"
            iColor = Format((colorVal Mod 256),"00") & ", " & _
                     Format(((colorVal \ 256) Mod 256),"00") & ", " & _
                     Format((colorVal \ 65536),"00")
        Case "IDX"
            iColor = rng.Interior.ColorIndex
        Case Else
            iColor = colorVal
    End Select
End Function

'Example use of the iColor function
Sub Get_Color_Format()
    Dim rng As Range

    For Each rng In Selection.Cells
        rng.Offset(0, 1).Value = iColor(rng, "HEX")
        rng.Offset(0, 2).Value = iColor(rng, "RGB")
    Next
End Sub

너는 원한다Range.DisplayFormat조건부 서식을 고려해야 하는 경우

(Excel 2010에 추가됨)

.범위 또는 선택 항목의 FormatCondition 속성은 Use With... 형식 지정에 도움이 됩니다.다음으로 끝 부분

정확한 색상 RGB 값을 알고 싶다면 매크로를 기록하여 RGB 값을 얻을 수 있습니다.

언급URL : https://stackoverflow.com/questions/45122782/how-to-get-the-background-color-from-a-conditional-formatting-in-excel-using-vba

반응형