조건부 서식 보호 (Microsoft Excel)
Kees에는 조건부 서식을 광범위하게 사용하는 워크 시트가 있습니다.
그러나 사용자가 정보를 복사하여 붙여 넣거나 끌어서 놓기를 사용하여 워크 시트를 편집 할 때 조건부 서식이 계속 엉망이됩니다. 그는 이런 일이 일어나지 않도록 가장 좋은 방법이 궁금합니다.
이는 조건부 서식이 바로 서식 지정으로 간주되기 때문에 발생합니다. 표준 복사 및 붙여 넣기 (또는 드래그 앤 드롭 편집)
서식을 포함한 모든 것을 복사합니다. 즉, 대상 셀에는 대상 셀의 형식이 아닌 소스 셀의 형식이 지정됩니다 (대상 셀에있을 수있는 조건부 형식 포함).
따라서 대답은 사용자에게 표준 복사 및 붙여 넣기를하지 말라고 말하는 것입니다.
대신 붙여 넣기 옵션을 사용하여 서식을 제외한 모든 항목 (또는 모든 항목)을 붙여 넣어야합니다.
물론 또 다른 옵션은 워크 시트를 보호하여 사용자가 아무것도 복사하여 붙여 넣을 수 없도록하는 것입니다. 그러나 사용자가 변경하기를 원할 수 있으므로 사용자에게는 약간 과감 할 수 있습니다. (조건부 서식을 엉망으로 만들고 싶지 않을뿐입니다.)
이것은 매크로 접근으로 이어집니다. 조건부 서식을 셀에 적용하는 매크로를 기록 할 수있는 경우 필요에 따라 기록 된 매크로를 적용하는 몇 가지 추가 매크로를 만들 수 있습니다. 예를 들어, 기록하는 매크로가 SetCondFormat과 같이 짧고 섹시한 이름이라고 가정 해 보겠습니다.
다음으로 Visual Basic Editor로 이동하고 직접 실행 창에 다음을 입력합니다.
? Cells.SpecialCells(xlCellTypeAllFormatConditions).Address
조건부 서식이 모두 설정되어 있다고 가정하면 조건부 서식을 사용하는 셀 및 범위의 주소를 표시하는 줄 (긴 줄)이 반환되어야합니다. 다음과 같이 표시됩니다.
$B$3:$B$50,$D$3:$D$50,$G$3:$I$20
그런 다음 ThisWorksheet 코드 모듈에 다음 매크로를 추가합니다.
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range Const cCFAddress = "$B$3:$B$50,$D$3:$D$50,$G$3:$I$20" On Error Resume Next Set r = Range(cCFAddress) On Error GoTo 0 If r IsNot Nothing Then If Application.Intersect(Target, r) IsNot Nothing Then SetCondFormat End If End If End Sub
여기서 핵심은 직접 실행 창에서 주소를 볼 때 반환 된 것과 동일하게 cCFAddress 상수가 설정되어 있는지 확인하는 것입니다. (나중에 조건부 서식을 변경하는 경우 직접 실행 창 트릭을 다시 사용하고 위의 매크로에서 줄을 간단히 변경할 수 있습니다.)
매크로는 워크 시트에 변경 사항이있을 때마다 실행됩니다. 변경된 주소 (대상 변수에 전달됨)가 조건부 형식을 포함하는 원래 셀의 일부인지 확인합니다. 그렇다면 SetCondFormat (조건부 서식을 수행하기 위해 기록한 형식)이 다시 실행됩니다.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (4362)은 Microsoft Excel 2007, 2010, 2013 및 2016에 적용됩니다.