메뉴

엑셀 셀 글자색 및 배경색 반환 :: GetColor 함수 사용법

특정 셀의 글자색 및 배경색을 확인하는 GetColor 함수의 사용법 및 동작원리를 알아봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2020. 10. 12. 02:20
URL 복사
메모 남기기 : (9)

엑셀 셀 배경색 및 글자색 반환 :: GetColor 함수 사용법 총정리

엑셀 GetColor 함수 목차 바로가기
요약

엑셀 GetColor 함수는 선택한 셀의 배경색 및 글자색을 반환하는 엑셀 사용자지정 함수입니다.

명령문 구문
= GetColor ( 셀, [글자색상반환], [반환옵션] )
사용된 인수 및 변수 알아보기
인수 설명

[Range]
배경색 또는 글자색을 반환할 대상 셀입니다. 반드시 하나의 셀이여야하며, 하나 이상의 셀이 입력될 경우 함수는 #VALUE! 오류를 반환합니다.
글자색상반환
[Boolean, 선택인수]
기본값은 FALSE 입니다. FALSE 일 경우 셀의 배경색을 반환하며, TRUE 일 경우 글자색상을 반환합니다.
반환옵션
[Integer, 선택인수]
기본값은 0 이며, HEX 값을 반환합니다.

  • 0 : [기본값] HEX 값을 반환합니다. (예: "FFFFFF", "FFFF00" 등.. )
  • 1 : RGB 값을 반환합니다. (예: "255, 255, 255" 등.. )
  • -1 : 정수값을 반환합니다. (예: : "1677722", "65535" 등.. )

예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.

  • [엑셀VBA함수] GetColor 함수 :: 셀 배경색 및 글자색 확인
    예제파일

상세 설명

엑셀 GetColor 함수는 지정한 셀의 글자색 및 배경색을 확인하는 사용자 지정 함수입니다. 글자색상반환여부를 선택하여 글자색 또는 배경색을 선택하여 반환할 수 있습니다. 첫번째 인수는 셀은 하나의 셀만 선택 가능하며, 하나 이상의 셀이 입력될 경우 함수는 #VALUE! 오류를 반환합니다.

엑셀은 셀의 색상변경 작업으로 함수를 재계산 할 수 없습니다. 따라서 지정한 셀의 색상이 변경 될 경우 GetColor 함수는 변경된 색으로 값이 자동갱신되지 않으므로 함수를 재입력하거나 또는 셀의 값을 변경하여 함수를 갱신합니다.

엑셀 셀 배경색 및 글자색 반환, GetColor명령문 동작원리

GetColor 명령문 전체 코드
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ GetColor 함수
'▶ 셀의 배경색 및 글자색을 반환 합니다.
'▶ 인수 설명
'_____________rng              : 차원을 검토할 배열을 입력합니다.
'_____________font_color     : TRUE일 경우 글꼴색상을 반환합니다.
'_____________return_type   : 0 - HEX, 양수 - RGB, 음수 - 엑셀기본(정수)
'###############################################################
 
Function GetColor(rng As Range, Optional font_color As Boolean = False, Optional return_type As Integer = 0) As Variant
 
    Dim colorVal As Variant
 
    If rng.Columns.Count <= 1 And rng.Rows.Count <= 1 Then
        If font_color = True Then
            colorVal = rng.Font.Color
        Else
            colorVal = rng.Interior.Color
        End If
 
        Select Case Sgn(return_type)
            Case 0
                GetColor = Hex(colorVal)
            Case 1
                GetColor = (colorVal Mod 256) & ", " & ((colorVal \ 256) Mod 256) & ", " & (colorVal \ 65536)
            Case Else
                GetColor = colorVal
            End Select
    Else
            GetColor = CVErr(xlErrValue)
    End If
 
End Function
실전 사용 예제
  • =GetColor(A1)
    ' A1셀의 배경색을 HEX 값으로 반환합니다. (예: FFFFFF)
  • =GetColor(A1,TRUE)
    ' A1셀의 글자색을 HEX 값으로 반환합니다. (예: 000000)
  • =GetColor(A1,,1)
    ' A1 셀의 배경색을 RGB 값으로 반환합니다. (예: 255, 255, 255)
명령문 동작원리 단계별 알아보기
  1. 입력한 셀이 하나 이상일 경우 #VALUE! 오류를 반환합니다.
            If rng.Columns.Count <= 1 And rng.Rows.Count <= 1 Then
            Else
                    GetColor = CVErr(xlErrValue)
            End If
  2. 글자색상반환 옵션이 TRUE 일 경우 글자색을, FALSE일 경우 배경색을 확인합니다.
                If font_color = True Then
                    colorVal = rng.Font.Color
                Else
                    colorVal = rng.Interior.Color
                End If
  3. 반환옵션에 따라 GetColor함수 결과값을 반환 후 함수를 종료합니다.
                Select Case Sgn(return_type)
                    Case 0
                        GetColor = Hex(colorVal)
                    Case 1
                        GetColor = (colorVal Mod 256) & ", " & ((colorVal \ 256) Mod 256) & ", " & (colorVal \ 65536)
                    Case Else
                        GetColor = colorVal
                    End Select

관련링크 : MS 홈페이지 VBA Range.Interior 속성 설명 바로가기(영문)

댓글 9
5 (5개 평가)
비셀스
비셀스 2020.06.10 19:35
감사합니다. 잘 사용하겠습니다.  
굴레악
굴레악 2020.07.14 11:18
색상 관련해서 항상 궁금했는데 연습해 봐야겠네요.
엑린이
엑린이 2021.07.29 02:22
 셀의 색상이 변경 될 경우 GetColor 함수는 변경된 색으로 값이 자동갱신되지 않으므로 함수를 재입력하거나 또는 셀의 값을 변경하여 함수를 갱신합니다. -항상 감사히 보고있습니다 위 글과 같이 바로 반영되지 않으나, 혹시 글자색이 변했을때 바로 반영되게 하는 방법이 있을지 궁금해 댓글남겨봅니다 감사합니다 또는 함수를 복사해서 재입력해주는 vba를 하나 짜는게 빠를까요?
진해벚꽃
진해벚꽃 2022.07.13 14:47
조건부서식이 걸려있는 색상의 값을 가져 올수도 있나요? 확인하는 방법은 어떻게 되나요? 답변부탁드립니다.
오빠두엑셀
오빠두엑셀 작성자 2022.07.14 18:21
안녕하세요.
Range.DisplayFormat.Interior.Color
를 사용해보세요.
원조백수
원조백수 2023.04.27 12:12
UDF에서는 DisplayFormat을 사용하여 결과 값을 가져올 수 없고 일반 VBA 코드에서는 사용이 가능합니다.
LINTANN
LINTANN 2025.01.23 14:54
어디에 수정을 해야하는 건가요~~~~??
오빠두엑셀
오빠두엑셀 작성자 2025.01.26 17:08
안녕하세요. 아래와 같이 전체 코드를 작성 후, =COLOR(셀) 함수로 사용해보시길 바랍니다. :)
Function GetColor(Rng As Range, Optional font_color As Boolean = False, Optional return_type As Integer = 0) As Variant


    Dim colorVal As Variant
    
        If Rng.Columns.Count <= 1 And Rng.Rows.Count <= 1 Then
            If font_color = True Then
                colorVal = Rng.DisplayFormat.Font.Color
            Else
                colorVal = Rng.DisplayFormat.Interior.Color
            End If
            
            Select Case Sgn(return_type)
                Case 0
                    GetColor = Hex(colorVal)
                Case 1
                    GetColor = (colorVal Mod 256) & ", " & ((colorVal \ 256) Mod 256) & ", " & (colorVal \ 65536)
                Case Else
                    GetColor = colorVal
                End Select
        Else
                GetColor = CVErr(xlErrValue)
        End If
    
End Function




Function Color(Rng As Range, Optional isFont As Boolean = False)
 
Dim r As Range: Dim v As Double
Dim rColor As Variant: Dim refColor As Variant
 
Color = Rng.Parent.Evaluate("GetColor(" & Rng.Address(False, False) & "," & CLng(isFont) & ")")
 
End Function
강민준🤗
강민준🤗 2024.08.11 12:21
좋은 강의 감사합니다.