엑셀/VBA

엑셀 VBA - 셀 색 확인하기/셀 색 값 확인하기/색의 값

gongdol 2020. 11. 1. 11:58
300x250

조건부 서식을 사용하면 색칠할 수 있다. 과연 조건부 서식의 셀 인덱스 값을 가져올 수 있을까?

 

확인해보자.

 

우선 확인을 위해 셀의 색값을 가져오는 방법을 알아보자.

 

셀 색을 칠할때와 마찬가지로 색의 값을 가져오는 방식은 2가지가 있다.

 

1. 셀 인덱스 가져오기

2. 셀 RGB값 가져오기

 

우선 인덱스 부터 가져와 보자.

 

*셀의 색 인덱스 가져오기

---------------------------------------------------------------------------------------------------------

Sub 색칠하기_RGB컬러()
    
    Cells(2, 2).Interior.ColorIndex = "1"
    
    MsgBox (Cells(2, 2).Interior.ColorIndex)
    
End Sub

---------------------------------------------------------------------------------------------------------

 

위의 코드는 셀의 INDEX 1(검정) 칠하고 INDEX 메세지 박스로 확인하는 코드이다.

(아래 컬러 인덱스 참고)

 

실행해보자

 

INDEX를 1로 확인할 수 있었다.

 

검은색에 맞는 엔덱스가 1로 표기됨을 확인할 수 있었다.

 

.

.

.

.

.

.

.

.

.

 

 

그럼 이제 2번째 방법인 RGB 방법을 해보자

 

*RGB 값 가져오기

---------------------------------------------------------------------------------------------------------

Sub 색칠하기_RGB컬러()

   

    Cells(2, 2).Interior.Color = RGB(0, 255, 155) 'RGB

   

    Strd = Right("000000" & Hex(Cells(2, 2).Interior.Color), 6)

   

    MsgBox (Strd)

    MsgBox (Val("&H" & Mid(Strd, 1, 2)))   'B 위의 설정 숫자

    MsgBox (Val("&H" & Mid(Strd, 3, 2)))   'G 위의 설정 숫자

    MsgBox (Val("&H" & Mid(Strd, 5, 2)))   'R 위의 설정 숫자

   

End Sub

---------------------------------------------------------------------------------------------------------

 

위의 코드는 RGB 색으로 2행 2열에 색칠하고

 

색칠값을 가져오는 코드다. 

 

값을 가져오면 RGB색이 -> BGR 로 반전되어 나오는 것을 주의하자잉

 

결과는 아래와 같다. 

 

메세지 박스 첫번째 줄
B 컬러 값
G 컬러값
R 컬러값

 

 

 

이제 처음에 목표했던 조건부 서식의 셀값이 나오는지 확인해 보자.

 

TEST를 위해 아래와 같이 1과 0을 기입하고 조건부 수식은 새규칙을 적용하여 >0 큰 경우 색칠하는 방식을 택했다.

*조건부 수식은 정리해 놓은 다른 글을 참고하자.

조건부 서식을 위한 예제

INDEX 값을 가져오면 44 값이 나와야 할것이다. 확인해보자.

 

---------------------------------------------------------------------------------------------------------

Sub 조건부서식COLOR확인하기()
    
    For I = 2 To 8
        MsgBox (Cells(I, 2).Interior.ColorIndex)
        Cells(I, 3) = Cells(I, 2).Interior.ColorIndex
    Next
    
End Sub

---------------------------------------------------------------------------------------------------------

위의 코드는 INDEX 값을 C열에다 적는 코드인데

 

결과가 이상하다.

 

뭐지?

모르겠다. 그냥 조건부 수식 사용하느니 내가 색칠 해서VBA 사용할란다.

 

끝. 누가 이유알면 알려줬으면 좋겠따...

 

*COLOR INDEX 참고

300x250