EXCEL - VBA
조건부 서식을 인쇄할 때 제거하는 방법
별동산
2024. 4. 27. 08:29
반응형
1. 문제
아래와 같이 셀을 클릭했을 때 수평과 수직으로 표시가 되는데, 인쇄할 때 제외하는 방법을 알아보고자 합니다.
먼저 범위 외 셀을 클릭하면 조건부 서식이 적용되지 않으므로 범위 외 셀을 클릭하고 인쇄하는 방법이 있습니다.
그것이 아니라 자동으로 조건부 서식이 제거되고 인쇄되는 것을 구현하려고 합니다.
두 가지가 있는데 하나씩 다뤄보겠습니다.
2. 해법 1
가. 실행 방법
'조건부 서식을 지우기' 매크로와 '조건부 서식 원래대로' 매크로를 만든 다음 인쇄 버튼 클릭 시 '조건부 서식을 지우기'에 인쇄 부분이 있으므로 두 개를 연달아서 실행하면 됩니다.
나. 코드
코드는 아래와 같습니다.
Option Explicit
Dim sht As Worksheet
Sub 조건부서식지우기()
Dim PrintArea As Range
Set sht = Worksheets(1)
' 시트 전체에서 규칙 지우기
sht.Cells.FormatConditions.Delete
Set PrintArea = sht.Range("a1", Range("A4").CurrentRegion)
PrintArea.PrintPreview
Call 조건부서식원래대로
End Sub
Sub 조건부서식원래대로()
Dim rng As Range
'조건부 서식 변수 지정
Dim cfRule As FormatCondition
Set sht = Worksheets(1)
'조건부 서식의 메소드가 Add뿐이 없어서 기존 조건부서식 모두 지워야 함
sht.Cells.FormatConditions.Delete
'조건부 서식 적용 대상 범위 지정
'application.inputbox로 입력 받을 수 있음
' Set rng = Application.InputBox("조건부 서식을 적용할 범위를 지정하세요.", Type:=8)
'수동으로 범위 지정
Set rng = sht.Range("A4").CurrentRegion
rng.Select
'조건부 서식의 수식 입력
Set cfRule = rng.FormatConditions.Add(Type:=xlExpression, Formula1:="=ROW()=CELL(""row"")") ' 조건을 설정하는데 여기서는 $A1이 1인 경우를 확인하고 있습니다.
'이유는 잘 모르겠는데, 주석처리하면 안됨.
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
'조건부 서식의 서식 지정
With rng.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.799981688894314
End With
'조건부 서식 입력 반복
Set cfRule = rng.FormatConditions.Add(Type:=xlExpression, Formula1:="=COLUMN()=CELL(""col"")")
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With rng.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.799981688894314
End With
sht.Range("T10").Select
End Sub
다. 코드 설명
Dim sht As Worksheet
두 개의 서브 프로시저에서 모두 사용되기 때문에 밖으로 빼냈습니다.
' 시트 전체에서 규칙 지우기
sht.Cells.FormatConditions.Delete
'조건부 서식 변수 지정
Dim cfRule As FormatCondition
Set PrintArea = sht.Range("a1", Range("A4").CurrentRegion)
PrintArea.PrintPreview
인쇄 영역을 변수에 저장하고 인쇄 미리 보기를 합니다.
Call 조건부서식원래대로
조건부서식원래대로 서브 프로시저를 호출합니다.
'조건부 서식 변수 지정
Dim cfRule As FormatCondition
'조건부 서식의 수식 입력
Set cfRule = rng.FormatConditions.Add(Type:=xlExpression, Formula1:="=ROW()=CELL(""row"")")
'이유는 잘 모르겠는데, 주석처리하면 안됨.
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
'조건부 서식의 서식 지정(가로 줄)
With rng.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.799981688894314
End With
'조건부 서식 입력 반복(세로 줄)
Set cfRule = rng.FormatConditions.Add(Type:=xlExpression, Formula1:="=COLUMN()=CELL(""col"")")
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With rng.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.799981688894314
End With
sht.Range("T10").Select
라. 실행 결과
아래와 같이 인쇄 미리 보기가 조건부 서식이 지정되어 있더라도
인쇄 버튼을 누르면 조건부 서식 제거된 채로 인쇄되고,
인쇄가 끝나면 원래대로 돌아옵니다.
반응형