엑셀 VBA에서 날짜 및 시간(DateTime) 관련 기능은 Date, Time, Now 등의 내장 함수와 DateDiff, DateAdd 같은 다양한 함수를 활용하여 데이터를 조작할 수 있습니다.
1. 현재 날짜 및 시간 가져오기
✅ 현재 날짜 (Date)
Sub 현재날짜()
MsgBox "오늘 날짜: " & Date
End Sub
|
📌 Date 함수는 현재 시스템 날짜를 반환
📌 시간 정보 없이 "YYYY-MM-DD" 형식의 날짜만 반환
✅ 현재 시간 (Time)
Sub 현재시간()
MsgBox "현재 시간: " & Time
End Sub
|
📌 Time 함수는 현재 시스템 시간을 반환 (시간만 포함)
✅ 현재 날짜 및 시간 (Now)
Sub 현재날짜시간()
MsgBox "현재 날짜 및 시간: " & Now
End Sub
|
📌 Now 함수는 현재 날짜와 시간을 함께 반환
2. 날짜 및 시간 포맷 변경 (Format 함수)
Sub 날짜시간_포맷()
Dim 현재 As Date
현재 = Now
MsgBox "날짜: " & Format(현재, "YYYY-MM-DD") & vbNewLine & _
"시간: " & Format(현재, "HH:MM:SS AM/PM")
End Sub
|
📌 Format 함수로 날짜 및 시간을 원하는 형식으로 변환 가능
📌 예제 출력
날짜: 2024-03-08
시간: 02:30:45 PM
|
날짜: 2024-03-08 시간: 02:30:45 PM
3. 날짜 연산 (DateAdd 함수)
✅ 날짜에 특정 일/월/년 추가
Sub 날짜추가()
Dim 새날짜 As Date
새날짜 = DateAdd("d", 7, Date) ' 현재 날짜 + 7일
MsgBox "7일 후 날짜: " & 새날짜
End Sub
|
📌 DateAdd("d", 7, Date) → 현재 날짜에서 7일 추가
✅ DateAdd에서 사용할 수 있는 단위
단위 코드
|
설명
|
"yyyy"
|
년 추가
|
"m"
|
월 추가
|
"d"
|
일 추가
|
"h"
|
시간 추가
|
"n"
|
분 추가
|
"s"
|
초 추가
|
Sub 시간추가()
MsgBox "5시간 후: " & DateAdd("h", 5, Now)
End Sub
|
📌 현재 시간에서 5시간을 추가
4. 날짜 차이 계산 (DateDiff 함수)
✅ 두 날짜 간 차이 계산
Sub 날짜차이()
Dim 차이 As Integer
차이 = DateDiff("d", "2024-01-01", Date)
MsgBox "2024-01-01 이후 경과일: " & 차이 & "일"
End Sub
|
📌 "2024-01-01"부터 오늘까지의 일수 차이 계산
✅ DateDiff에서 사용할 수 있는 단위
단위 코드
|
설명
|
"yyyy"
|
년 차이
|
"m"
|
월 차이
|
"d"
|
일 차이
|
"h"
|
시간 차이
|
"n"
|
분 차이
|
"s"
|
초 차이
|
Sub 시간차이()
MsgBox "현재 시간과 10시간 전의 차이: " & DateDiff("h", Now, DateAdd("h", -10, Now)) & "시간"
End Sub
|
📌 현재 시간과 10시간 전의 차이 계산
5. 요일 구하기 (Weekday & WeekdayName)
✅ 요일 번호 반환 (Weekday 함수)
Sub 요일번호()
MsgBox "오늘의 요일 번호: " & Weekday(Date)
End Sub
|
📌 1(일요일) ~ 7(토요일) 형태로 요일 반환
✅ 요일 이름 반환 (WeekdayName 함수)
Sub 요일이름()
MsgBox "오늘의 요일: " & WeekdayName(Weekday(Date))
End Sub
|
📌 오늘 요일을 "월요일", "화요일" 등의 이름으로 반환
6. 특정 날짜의 월, 일, 년, 시간 추출
Sub 날짜정보추출()
Dim 날짜 As Date
날짜 = Now
MsgBox "연도: " & Year(날짜) & vbNewLine & _
"월: " & Month(날짜) & vbNewLine & _
"일: " & Day(날짜) & vbNewLine & _
"시간: " & Hour(날짜) & vbNewLine & _
"분: " & Minute(날짜) & vbNewLine & _
"초: " & Second(날짜)
End Sub
|
📌 날짜에서 연도, 월, 일, 시간, 분, 초 추출 가능
7. 날짜 형식 변환 (CDate 함수)
Sub 문자열을날짜로()
Dim 날짜 As Date
날짜 = CDate("2024-03-08")
MsgBox "변환된 날짜: " & 날짜
End Sub
|
📌 문자열을 Date 형식으로 변환
8. 날짜 비교 (If 조건문)
Sub 날짜비교()
Dim 특정일 As Date
특정일 = "2024-03-15"
If Date > 특정일 Then
MsgBox "현재 날짜가 2024-03-15 이후입니다."
Else
MsgBox "현재 날짜가 2024-03-15 이전입니다."
End If
End Sub
|
📌 현재 날짜가 특정 날짜보다 이전인지 이후인지 비교 가능
9. 특정 날짜가 주말인지 확인
vba
Sub 주말확인() Dim 오늘 As Date 오늘 = Date If Weekday(오늘) = vbSaturday Or Weekday(오늘) = vbSunday Then MsgBox "오늘은 주말입니다!" Else MsgBox "오늘은 평일입니다." End If End Sub
Sub 주말확인()
Dim 오늘 As Date
오늘 = Date
If Weekday(오늘) = vbSaturday Or Weekday(오늘) = vbSunday Then
MsgBox "오늘은 주말입니다!"
Else
MsgBox "오늘은 평일입니다."
End If
End Sub
|
📌 vbSaturday, vbSunday를 사용하여 주말 여부 확인
10. 랜덤한 날짜 생성
Sub 랜덤날짜()
Dim 시작일 As Date, 종료일 As Date, 랜덤날짜 As Date
시작일 = CDate("2024-01-01")
종료일 = CDate("2024-12-31")
랜덤날짜 = 시작일 + Int((종료일 - 시작일 + 1) * Rnd)
MsgBox "랜덤 날짜: " & 랜덤날짜
End Sub
|
📌 2024년 1월 1일부터 12월 31일 사이의 랜덤 날짜 생성
📝 정리
기능
|
VBA 코드
|
현재 날짜
|
Date
|
현재 시간
|
Time
|
현재 날짜 및 시간
|
Now
|
날짜 포맷 변경
|
Format(Now, "YYYY-MM-DD HH:MM:SS")
|
날짜 연산 (7일 추가)
|
DateAdd("d", 7, Date)
|
두 날짜 차이 계산
|
DateDiff("d", "2024-01-01", Date)
|
요일 번호 확인
|
Weekday(Date)
|
요일 이름 반환
|
WeekdayName(Weekday(Date))
|
연도, 월, 일 추출
|
Year(Date), Month(Date), Day(Date)
|
🔥 VBA의 날짜 및 시간 함수를 활용하면 다양한 자동화 작업을 쉽게 구현할 수 있습니다! 🚀