반응형
Excel VBA 코드를 사용한 조건부 포맷
Range 개체를 호출했습니다.DestinationRange
어느 범위의 참조B3:H63
Excel VBA 코드를 사용하여 다음 두 가지 조건부 형식 규칙을 동적으로 적용합니다(범위가 변경될 수 있음).
- 셀 열 D가 비어 있으면 형식 지정을 적용할 수 없습니다(참인 경우 중지 사용).
- E 열의 셀 값이 F 열의 셀 값보다 작으면 전체 행의 배경이 녹색이어야 합니다.
녹음을 해봤는데 녹음이 제대로 안 돼요.VBA를 사용하여 이 조건부 포맷을 수행하려면 어떻게 해야 합니까?
이렇게 하면 간단한 사례에 대한 답을 얻을 수 있지만, 비교해야 할 열(이 경우 B 및 C)과 초기 범위(A1:D5
이 경우)는 어떻게 됩니까?그러면 제가 좀 더 완벽한 답변을 드릴 수 있습니다.
Sub setCondFormat()
Range("B3").Select
With Range("B3:H63")
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=IF($D3="""",FALSE,IF($F3>=$E3,TRUE,FALSE))"
With .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
With .Interior
.PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0
End With
End With
End With
End Sub
참고: 이 테스트는 Excel 2010에서 테스트되었습니다.
편집: 주석을 기반으로 코드가 업데이트되었습니다.
VBA를 사용하여 예상되는 방식으로 중복 조건을 적용할 수 있는 방법을 방금 발견한 것 같습니다.몇 시간 동안 다양한 접근 방식을 시도한 결과, 모든 접근 방식이 생성된 후에 조건부 형식 규칙의 "적용 대상" 범위를 변경하는 것이 효과적이라는 것을 알게 되었습니다.
다음은 제 작업 예입니다.
Sub ResetFormatting()
' ----------------------------------------------------------------------------------------
' Written by..: Julius Getz Mørk
' Purpose.....: If conditional formatting ranges are broken it might cause a huge increase
' in duplicated formatting rules that in turn will significantly slow down
' the spreadsheet.
' This macro is designed to reset all formatting rules to default.
' ----------------------------------------------------------------------------------------
On Error GoTo ErrHandler
' Make sure we are positioned in the correct sheet
WS_PROMO.Select
' Disable Events
Application.EnableEvents = False
' Delete all conditional formatting rules in sheet
Cells.FormatConditions.Delete
' CREATE ALL THE CONDITIONAL FORMATTING RULES:
' (1) Make negative values red
With Cells(1, 1).FormatConditions.add(xlCellValue, xlLess, "=0")
.Font.Color = -16776961
.StopIfTrue = False
End With
' (2) Highlight defined good margin as green values
With Cells(1, 1).FormatConditions.add(xlCellValue, xlGreater, "=CP_HIGH_MARGIN_DEFINITION")
.Font.Color = -16744448
.StopIfTrue = False
End With
' (3) Make article strategy "D" red
With Cells(1, 1).FormatConditions.add(xlCellValue, xlEqual, "=""D""")
.Font.Bold = True
.Font.Color = -16776961
.StopIfTrue = False
End With
' (4) Make article strategy "A" blue
With Cells(1, 1).FormatConditions.add(xlCellValue, xlEqual, "=""A""")
.Font.Bold = True
.Font.Color = -10092544
.StopIfTrue = False
End With
' (5) Make article strategy "W" green
With Cells(1, 1).FormatConditions.add(xlCellValue, xlEqual, "=""W""")
.Font.Bold = True
.Font.Color = -16744448
.StopIfTrue = False
End With
' (6) Show special cost in bold green font
With Cells(1, 1).FormatConditions.add(xlCellValue, xlNotEqual, "=0")
.Font.Bold = True
.Font.Color = -16744448
.StopIfTrue = False
End With
' (7) Highlight duplicate heading names. There can be none.
With Cells(1, 1).FormatConditions.AddUniqueValues
.DupeUnique = xlDuplicate
.Font.Color = -16383844
.Interior.Color = 13551615
.StopIfTrue = False
End With
' (8) Make heading rows bold with yellow background
With Cells(1, 1).FormatConditions.add(Type:=xlExpression, Formula1:="=IF($B8=""H"";TRUE;FALSE)")
.Font.Bold = True
.Interior.Color = 13434879
.StopIfTrue = False
End With
' Modify the "Applies To" ranges
Cells.FormatConditions(1).ModifyAppliesToRange Range("O8:P507")
Cells.FormatConditions(2).ModifyAppliesToRange Range("O8:O507")
Cells.FormatConditions(3).ModifyAppliesToRange Range("B8:B507")
Cells.FormatConditions(4).ModifyAppliesToRange Range("B8:B507")
Cells.FormatConditions(5).ModifyAppliesToRange Range("B8:B507")
Cells.FormatConditions(6).ModifyAppliesToRange Range("E8:E507")
Cells.FormatConditions(7).ModifyAppliesToRange Range("A7:AE7")
Cells.FormatConditions(8).ModifyAppliesToRange Range("B8:L507")
ErrHandler:
Application.EnableEvents = False
End Sub
언급URL : https://stackoverflow.com/questions/13661965/conditional-formatting-using-excel-vba-code
반응형
'programing' 카테고리의 다른 글
추가 방법추가 방법자바스크립트로?자바스크립트로? (0) | 2023.08.20 |
---|---|
PL/SQL의 CASE 문에 스택 조건 (0) | 2023.08.20 |
아리아 레이블에 동적 데이터를 바인딩하는 방법은 무엇입니까? (0) | 2023.08.15 |
[master] master -> master (먼저 입력) (0) | 2023.08.15 |
Spring Rest Template에서 빈 응답 처리 방법 (0) | 2023.08.15 |