EXCEL VBA

엑셀 VBA 형식을 지정하는 Format 함수(날짜 및 시간 형식 지정)

카루루1007 2024. 8. 6. 23:31
728x90
반응형

[ 들어가며 ]

앞서서 Format 함수의 숫자 형식 지정에 대해 알아 보았습니다.

VBA의 Format 함수는 날짜나 시간을 원하는 형식으로 변경할 수 있습니다.
이 함수는 다양한 날짜 형식을 문자열로 지원하여,
원하는 형식으로 날짜를 표시할 수 있습니다.

먼저 사용 예시를 알아보기 전에
VBA에서 사용되는
Date, Time, Now
에 대해 간단히 알아보겠습니다.

Date는 현재 시스템의 날짜를 반환합니다.
Time은 현재 시스템의 시간을 반환합니다.
Now는 현재 시스템의 시간과 날짜를 모두 반환합니다.

앞으로 예시에서는 날짜와 시간을 모두 표시하는 경우를 제외하고
datetime을 나누어 사용할 것입니다.

format 함수의 사용과 관련한 것으로 한정하면
datetime대신 now 하나만 사용해도 큰 문제는 없을 것으로 보이나,

그 외의 어떤 상황에서
datetime을 구분하지 않고
now 하나만 사용한다면
문제가 생길 수 있는 경우도 있습니다.

예를 들어, 날짜만 비교하거나 시간만 조작해야 하는 경우에는
now를 사용하면 불필요한 정보가 포함될 수 있습니다.

이 점은 참고하시기 바랍니다.

[ 날짜 및 시간 형식 지정 방법 ]

먼저 기본적으로 Date, Time, Now가 어떤 형식으로 표시되는 지 알아보겠습니다.

Sub Example_Format()
    MsgBox Format(Date)
    MsgBox Format(Time)
    MsgBox Format(Now)
End Sub

위 코드의 실행결과는 각각 다음과 같습니다.
2024-08-06(화)
오후 11:04:26
2024-08-06(화) 오후 11:04:26

이제 날짜를 여러가지 형식으로 표시해 보겠습니다.

Sub Example_Format()
    MsgBox Format(Date, "yyyy-mm-dd")
    MsgBox Format(Date, "yyyy년 mm월 dd일")
    MsgBox Format(Date, "yyyymmdd")
End Sub

위 코드를 실행하면
아래와 같이 결과가 차례로 출력이 됩니다.
2024-08-06
2024년 08월 06일
20240806

연도만 추출하고 싶다면 yyyy
월만 추출하고 싶다면 mm
날짜만 추출하고 싶다면 dd를 사용하면 됩니다.

dddd를 사용하면 요일이 표시가 되는데
지금 제 시스템에서는 영어로만 표시가 되서
원래 영어만 지원을 하는지
아니면 시스템 설정이 잘못되어 있는 것인지
확인이 어렵습니다.

dddd는 요일이 나타난다는 것을 우선 참고하세요.

다음은 시간을 12시간제 또는 24시간제로 표시하는 방법입니다.

Sub Example_Format()
    MsgBox Format(Time, "hh:nn:ss")
    MsgBox Format(Time, "hh:nn:ss AM/PM")
End Sub

이렇게 하면 다음과 같이 출력이 됩니다.
23:23:41
11:23:41 PM

인자의 마지막에
AM/PM을 추가해주면 12시간제로 표시가 되고
생략하면 24시간제로 표시가 됩니다.

날짜와 마찬가지로
시간만 표시하고 싶다면 hh
분만 표시하고 싶다면 mm
초만 표시하고 싶다면 ss
를 사용하면 됩니다.

[ 마치며 ]

이외에도 조금만 응용을 한다면
사용자가 원하는 형태로
날짜와 시간을 표시할 수 있습니다.

여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.

엑셀 공부하기
VBA 공부하기

728x90
반응형