메뉴
해결 M365

동적범위 조건부서식 in vba

구
2월 12일 조회 1,771
안녕하세요. 요즘 VBA를 공부하고 있습니다.

휴가 기간 중 카드 사용 내역이 있는지 확인하는 파일을 만드는 중인데, 막히는 부분이 있어 글 남기게 되었습니다.

 

1번 시트에 Filter 함수를 사용하여 A2셀에 있는 이름을 기준으로 2번 시트의 휴가 내역, 3번 시트의 카드 내역을 불러오고 있습니다.

 

B5셀 부터 휴가 사용일이 세로로 나열되어있고, E5셀부터 카드 사용일이 세로로 나열되어있습니다.

VBA를 사용해서, 휴가 사용일(동적범위 B5:B5~)과 동일한 날짜의 카드 사용일(E5:E5~)에 노란색 조건부 서식을 적용하고 싶은데, 해결방법을 몰라 발만 동동 구르고 있습니다..

 

VBA에서 동적 범위에 대한 조건부서식을 적용하는 코드나, 멤버십 강의 중 관련 강의가 있는지 알 수 있을까요?

댓글 7

원
원조백수 2월 13일
샘플 파일을 올려 주세요...
상상력으로는 해결하기 어렵습니다.
구
구름집 작성자 2월 13일
@원조백수 님 게시글 수정이 불가하여 댓글로 첨부파일 올렸습니다.

B5셀부터 시작하는 동적범위(사진 기준으로는 B5:B9)의 날짜를 기준으로, E5셀부터 시작하는 동적범위(사진 기준으로는 E5:E22)에 B5:B9와 같은 날짜가 있는 셀에 VBA를 활용하여 조건부서식을 적용할 수 있을까요?

원
원조백수 2월 14일
@구름집 님 어디까지 해 보셨는지, 막히는 부분이 어디인지 코드를 보여 주세요.
구
구름집 작성자 2월 14일
@원조백수 님 Sub ()
Dim ws As Worksheet
Dim lastRowB As Long, lastRowE As Long
Dim formula As String

' 작업할 워크시트 설정
Set ws = ThisWorkbook.Sheets("개별 조회")

' B열과 E열에서 동적 배열 함수가 적용된 범위의 마지막 행을 찾음
lastRowB = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
lastRowE = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row

' E열에 조건부 서식 적용할 조건 설정
' 동적으로 E열의 각 셀을 참조하여 B열의 동적 범위와 비교
formula = "=ISNUMBER(MATCH(INDIRECT(""E"" & ROW()), $B$5:$B$" & lastRowB & ", 0))"

' E열의 적용 범위 설정
With ws.Range("E5:E" & lastRowE)
.FormatConditions.Add Type:=xlExpression, Formula1:=formula
With .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
' 조건을 만족하는 셀의 서식 설정 (예: 배경색을 노란색으로 변경)
.Interior.Color = RGB(255, 255, 0)
.StopIfTrue = False
End With
End With
End Sub

아직 제대로 VBA를 공부를 하지 못하여 블로그 등을 참고하여 작성했습니다.

동적배열 설정이 잘못된 것 같은데, 자세하게 설명되어 있는 글이나 영상을 찾을 수가 없어 어떤 식으로 수정을 해야할지 잘 모르겠습니다.
공부해서라도 꼭 적용해보고 싶습니다.
도움주시면 감사하겠습니다.
구
구름집 작성자 2월 23일
@원조백수 님 선생님 혹시 확인 전 이신지요?
원
원조백수 채택된 답변 2월 23일
@구름집 님 E열에 겹치는 날짜에 표시가 제대로 된 것 같은데,,, 어떤 것이 안된다는 것인지요?
구
구름집 작성자 2월 28일
@원조백수 님 작성 후 명령어 실행을 안 하고 있었네요^^; 감사합니다.

질문답변 게시판의 최근 글

로그인

처음이면 카카오·네이버로 계속하면 바로 가입돼요

또는
비밀번호 찾기
Caps Lock이 켜져 있습니다
스크랩 완료