본문 바로가기
엑셀/VBA

VBA에서 엑셀 조건부 서식 모두 지우기 및 중복값 규칙 만들기

by 큐브빌드 2024. 6. 17.
반응형

엑셀 데이터를 사용하다 보면 유니크(Unique) 체크가 필요한 경우가 있습니다.

 

흔히 기본 Key값(마이크로 액세스에서 사용한 것으로 기억합니다.) , ID 값이죠.

 

그래서 다양한 중복 체크 방법이 있지만 저는 엑셀에서 기본적으로 제공하는 조건부 서식을 많이 사용합니다.

 

 

이미지와 같이 말이죠.

 

하지만 엑셀을 사용하다보면 행/열 삽입 또는 행/열 삭제 또는 복사 -> 붙여 넣기 등을 하다 보면 엄청 많은 조건부 서식들이 생성됩니다.

예를 들면 바로 위에 있는 이미지처럼 말이죠.

 

이렇게 조건부 서식이 많아지게 되면 엑셀은 자연스럽게 느려집니다. 

 

또한 일정 개수 이상되면 현재 워크시트에 적용되고 있는 리스트를 불러오는 데에도 시간이 걸리며, 지우기도 어려워집니다.

 

그래서 일단 먼저 알려드리고 싶은 내용은 현재 시트에 사용되고 있는 조건부 서식 개수를 확인하는 방법입니다.

Cells.FormatConditions.Count

 

현재 시트에 있는 모든 셀에 존재하는 조건부 서식 개수를 확인할 수 있습니다.

 

그리고 현재 시트에 있는 모든 조건부 서식을 제거하는 방법은

Cells.FormatConditions.Delete

입니다.

 

 

그다음 내가 원하는 조건부 서식을 만드는 방법입니다.

 

저는 중복 체크를 자주 사용하기 때문에 중복 체크를 설정하는 VBA 코드입니다.

 

DupleCheck.xlsm
0.02MB

 

 

혹시라도 사용하실 분 있으시면 해당 부분 사용하셔도 됩니다.

코드 내용은 아래와 동일합니다.

아래 코드는 A열에 값을 중복 체크하는 조건부 서식이 만들어집니다.

 

 

 

Sub DupleCheck()
Dim D_Address As Range
    Set D_Address = Range("a:a")
    D_Address.FormatConditions.AddUniqueValues
    D_Address.FormatConditions(D_Address.FormatConditions.Count).SetFirstPriority
    D_Address.FormatConditions(1).DupeUnique = xlDuplicate
    With D_Address.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent2
        .TintAndShade = 0
    End With
    With D_Address.FormatConditions(1).Font
        .Color = -16776961
        .TintAndShade = 0
    End With
    D_Address.FormatConditions(1).StopIfTrue = False
End Sub

 

D_Address의 경우 조건부 서식을 지정하고 싶은 영역입니다.

 

Interior의 경우는 배경 관련 꾸미기

 

Font의 경우는 글자색상입니다.

 

엑셀에서 프리셋으로 설정되어 있는 테마 색상을 VBA코드에서 찾는 방법은 조만간 다시 알려 드리겠습니다.

 

 

해당 색상을 설정하여 사용하면 됩니다.

 

 

 

반응형

댓글