반응형
VBA 에서 날짜와 시간은 어떻게 비교해야 할까요? 날짜의 내부는 계산에 사용할 수 있도록 일련 번호로 지정되어 있습니다. 이런 일련 번호를 나라와 국가의 날짜/시간 형식에 맞게 다양한 형태로 표현하는 것입니다. 기본적으로 1900년 1월 1일이 일련 번호 1이고, 2008년 1월 1일은 1900년 1월 1일에서 39,448일째 날이므로 일련 번호 39448이 됩니다.
날짜를 비교하는 방법은 비교 연산자를 사용해서 날짜 텍스트를 비교하거나 DATEVALUE 함수를 사용해서 일련번호로 변환한 뒤 비교할 수도 있습니다. 아무래도 두 번째 방법인 DATEVALUE 함수를 이용하는 것이 정확하겠죠.
먼저 현재 날짜를 비교해 보겠습니다. 엑셀 시트에 있는 날짜 형식의 데이터 중 현재 날짜와 동일한 날짜를 찾는 것입니다. 같은 텍스트를 찾듯이 “=” 비교 연산자와 현재 날짜를 나타내는 Date 개체를 이용합니다.
Sub ComDate()
Dim rng As Range
Dim cell As Range
Set rng = ActiveSheet.Range("B2").CurrentRegion
For Each cell In rng
If cell.Value = Date Then
cell.Interior.Color = vbRed
End If
Next cell
End Sub
다음은 부등호를 사용해서 날짜를 비교해 보겠습니다. 일반 텍스트를 비교하거나 날짜 일련번호를 비교하는 것도 가능합니다. 아래 소스는 영역에서 "2016-06-30" 보다 큰 날짜를 찾아 셀 배경색을 입히게 됩니다. 날짜를 텍스트로 비교해도 크고 작음을 판단할 수 있습니다.
If cell.Value > "2016-06-30" Then
cell.Interior.Color = vbRed
End If
또한 DateValue 함수를 사용해서 날짜 일련번호로 비교할 수도 있습니다. 결과는 텍스트를 비교한 것과 같습니다.
If cell.Value > DateValue("2016-06-30") Then
cell.Interior.Color = vbRed
End If
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 날짜 차이를 계산하는 DateDiff 함수 사용하기 ▶ 엑셀 VBA 년도, 월 비교해서 발생 횟수 조회하는 방법 ▶ 엑셀 VBA 입력된 값 형식 확인 Information 관련 함수 모음 ▶ 엑셀 VBA 문서가 열릴 때 이벤트 기능 구현하기 ▶ 엑셀 Excel 현재 날짜 입력을 위한 함수 Today, now 와 단축키 사용법 |
반응형
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 영역을 선택했을 때 이벤트 처리하기 (0) | 2023.07.02 |
---|---|
엑셀 VBA 사용자 정의 폼에서 그림 표시와 셀에 추가하기 (0) | 2023.07.02 |
엑셀 VBA 무한 루프 빠져 나오거나 취소 기능 없애는 방법 (0) | 2023.06.29 |
엑셀 VBA 매크로 함수로 공백 제거하기, Trim, RTrim, LTrim 함수 이용 (0) | 2023.06.28 |
엑셀 VBA 변수 범위 종류와 설정 방법 (1) | 2023.06.23 |
엑셀 VBA 정규식으로 한글, 일어, 한자 추출하기 (3) | 2023.06.22 |
엑셀 VBA Cells 속성의 다양한 사용법 (0) | 2023.06.22 |
엑셀 VBA 마지막 행과 열의 수 찾기 (3) | 2023.06.22 |