메뉴

GetColor

Function

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

GetColor 코드 미리보기
구문 = GetColor ( 셀, [글자색상반환], [반환옵션] )
인수구분 형식 설명
필수 Range
배경색 또는 글자색을 반환할 대상 셀입니다.
반드시 하나의 셀이어야 하며, 하나 이상의 셀이 입력될 경우 #VALUE! 오류를 반환합니다.
글자색상반환 선택 Boolean
TRUE 일 경우 글자색을, FALSE 일 경우 셀의 배경색을 반환합니다. 기본값은 FALSE 입니다.
반환옵션 선택 Integer
반환할 색상 값의 형식을 지정합니다. 기본값은 0 이며 HEX 값을 반환합니다.
0 은 HEX 값(예: FFFFFF), 1 은 RGB 값(예: 255, 255, 255), -1 은 정수 값을 반환합니다.

마스터 코드

복사한 코드는 VBA 편집기(Alt + F11) 새 모듈에 붙여넣어 사용하세요
Module1 · 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)
글자색 반환 · RGB 형식으로 반환
= GetColor ( A1, TRUE )
'// A1셀의 글자색을 HEX 값으로 반환합니다. (예: 000000)
= GetColor ( A1, , 1 )
'// A1 셀의 배경색을 RGB 값으로 반환합니다. (예: 255, 255, 255)

안내사항

엑셀은 셀의 색상 변경으로 함수를 재계산하지 않으므로, 색을 바꾼 뒤에는 함수를 다시 입력하거나 셀 값을 변경해 결과를 갱신해야 합니다.
댓글 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
좋은 강의 감사합니다.
스크랩 완료