VBA Function

날짜 및 시간(DateTime)

노만e 2025. 3. 15. 05:24

엑셀 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의 날짜 및 시간 함수를 활용하면 다양한 자동화 작업을 쉽게 구현할 수 있습니다! 🚀