Format 함수
주어진 형식 표현에 따라 서식이 지정된 식을 포함하는 Variant (문자열)을 반환합니다.
Syntax
Format(Expression, [ Format ], [ FirstDayOfWeek ], [ FirstWeekOfYear ])
Expression : 필수입니다.유효한 표현식입니다.
Format : 선택 사항입니다.유효한 명명된 또는 사용자 정의 형식 표현입니다.
FirstDayOfWeek : 선택 사항입니다.요일을 지정하는 상수입니다.
firstWeekOfYear : 선택 사항입니다.연도의 첫 번째 주를 지정하는 상수입니다.
firstdayofweek
firstdayofweek 인수는 다음과 같은 설정을 가지고 있습니다.
NLS : National Language Support의 약자로, 국가별 언어 및 문화 관련 설정을 의미합니다.
이는 시스템의 지역 설정에 따라 날짜 및 시간 형식이 자동으로 변경되는 것을 의미합니다. 예를 들어, 미국에서는 "MM/dd/yyyy" 형식으로 날짜를 표시하지만, 영국에서는 "dd/MM/yyyy" 형식으로 표시됩니다.
NLS가 궁금한 분은 아래 링크를 참고하세요.
National Language Support - Win32 apps
National Language Support
learn.microsoft.com
firstweekofyear
firstweekofyear 인수는 다음과 같은 설정을 가지고 있습니다.
참고
Format은 형식을 257자로 자릅니다.
형식을 지정하지 않고 숫자의 서식을 지정하려고 하면 Format은 국제적으로 인식되지만 Str 함수와 유사한 기능을 제공합니다. 그러나 Format을 사용하여 문자열로 서식을 지정한 양수에는 값의 부호를 위해 예약된 선행 공백이 포함되지 않으며, Str을 사용하여 변환된 양수에는 선행 공백이 유지됩니다.
지역화되지 않은 숫자 문자열의 서식을 지정하는 경우 원하는 모양을 얻으려면 사용자 정의 숫자 서식을 사용해야 합니다.
메모
Calendar 속성 설정이 Gregorian(그레고리력)이고 format 함수에서 날짜 형식을 지정하는 경우에는 제공되는 expression도 Gregorian(그레고리력)이어야 합니다. Visual Basic Calendar 속성 설정이 Hijri(회교력)이면 제공되는 expression도 Hijri(회교력)이어야 합니다.
Calendar 속성 설정이 Gregorian(그레고리력)이면 format 식 기호의 의미가 달라지지 않습니다. Calendar 속성 설정이 Hijri(회교력)이면 모든 날짜 형식 기호(예:dddd, mmmm, yyyy)가 의미는 같지만 Hijri(회교력)에 적용됩니다. 형식 기호는 영어 그대로 남습니다. AM과 PM처럼 텍스트로 표시되는 기호는 그 기호에 조합된 문자열(영어 또는 아라비아어)로 나타납니다. 특정 범위의 기호는 Calendar 속성 설정이 Hijri(회교력)일 때 다른 기호로 바뀝니다.
Date Symbols
예제 코드
Sub TestFormatSymbols()
Dim currentDate As Date
currentDate = Date
Dim formattedDate As String
formattedDate = Format(currentDate, "d") ' 일(day)을 1자리로 표시
Dim formattedDate2 As String
formattedDate2 = Format(currentDate, "dd") ' 일(day)을 2자리로 표시
Dim formattedWeekday As String
formattedWeekday = Format(currentDate, "w") ' 요일(weekday)을 숫자로 표시 (0: 일요일, 1: 월요일, ..., 6: 토요일)
Dim formattedWeekday2 As String
formattedWeekday2 = Format(currentDate, "ww") ' 연중 주(week)를 2자리로 표시
Dim formattedMonth As String
formattedMonth = Format(currentDate, "m") ' 월(month)을 1자리로 표시
Dim formattedMonth2 As String
formattedMonth2 = Format(currentDate, "mm") ' 월(month)을 2자리로 표시
Dim formattedMonth3 As String
formattedMonth3 = Format(currentDate, "mmm") ' 월(month)을 약어로 표시
Dim formattedMonth4 As String
formattedMonth4 = Format(currentDate, "mmmm") ' 월(month)을 전체 이름으로 표시
Dim formattedYear As String
formattedYear = Format(currentDate, "y") ' 연도(year)를 1자리로 표시
Dim formattedYear2 As String
formattedYear2 = Format(currentDate, "yy") ' 연도(year)를 2자리로 표시
Dim formattedYear4 As String
formattedYear4 = Format(currentDate, "yyyy") ' 연도(year)를 4자리로 표시
Debug.Print "일 (1자리 - d): " & formattedDate
Debug.Print "일 (2자리 - dd): " & formattedDate2
Debug.Print "요일 (w): " & formattedWeekday
Debug.Print "연중 주 (2자리 - ww): " & formattedWeekday2
Debug.Print "월 (1자리 - m): " & formattedMonth
Debug.Print "월 (2자리 - mm): " & formattedMonth2
Debug.Print "월 (약어 - mmm): " & formattedMonth3
Debug.Print "월 (전체 이름 - mmmm): " & formattedMonth4
Debug.Print "연도 (1자리 - y): " & formattedYear
Debug.Print "연도 (2자리 - yy): " & formattedYear2
Debug.Print "연도 (4자리 - yyyy): " & formattedYear4
End Sub
' Output
' 일 (1자리 - d): 22
' 일 (2자리 - dd): 22
' 요일 (w): 3
' 연중 주 (2자리 - ww): 34
' 월 (1자리 - m): 8
' 월 (2자리 - mm): 08
' 월 (약어 - mmm): Aug
' 월 (전체 이름 - mmmm): August
' 연도 (1자리 - y): 234
' 연도 (2자리 - yy): 23
' 연도 (4자리 - yyyy): 2023
Time symbols
예제 코드
Sub TestFormatTimeSymbols()
' 현재 시간을 currentTime 변수에 저장
Dim currentTime As Date
currentTime = Now
' 12시간 형식 시간 포맷
Dim formattedHour1 As String
formattedHour1 = Format(currentTime, "h")
Dim formattedHour2 As String
formattedHour2 = Format(currentTime, "hh")
' 분 포맷
Dim formattedMinute1 As String
formattedMinute1 = Format(currentTime, "n")
Dim formattedMinute2 As String
formattedMinute2 = Format(currentTime, "nn")
' 초 포맷
Dim formattedSecond1 As String
formattedSecond1 = Format(currentTime, "s")
Dim formattedSecond2 As String
formattedSecond2 = Format(currentTime, "ss")
' 시간 포맷 (예: 1시 2분, 1시 02분)
Dim formattedTime1 As String
formattedTime1 = Format(currentTime, "h:m")
Dim formattedTime2 As String
formattedTime2 = Format(currentTime, "h:mm")
' 결과 출력
Debug.Print "시 (1자리 - h): " & formattedHour1
Debug.Print "시 (2자리 - hh): " & formattedHour2
Debug.Print "분 (1자리 - n): " & formattedMinute1
Debug.Print "분 (2자리 - nn): " & formattedMinute2
Debug.Print "초 (1자리 - s): " & formattedSecond1
Debug.Print "초 (2자리 - ss): " & formattedSecond2
Debug.Print "시간표시 (1자리- h:m): " & formattedTime1
Debug.Print "시간표시 (2자리- h:mm): " & formattedTime2
End Sub
' Output
' 시 (1자리 - h): 15
' 시 (2자리 - hh): 15
' 분 (1자리 - n): 18
' 분 (2자리 - nn): 18
' 초 (1자리 - s): 32
' 초 (2자리 - ss): 32
' 시간표시 (1자리- h:m): 15:18
' 시간표시 (2자리- h:mm): 15:18
Example
아래 예제는 Format 함수를 사용하여 명명된 형식과 사용자 정의 형식을 모두 사용하여 값을 서식화하는 다양한 예제를 보여줍니다. 날짜 구분 기호 (/), 시간 구분 기호 (:), AM/PM 리터럴의 경우 코드가 실행되는 로케일 설정에 따라 실제 서식이 적용되는 출력이 달라집니다. 시간과 날짜가 개발 환경에서 표시될 때 코드 로케일의 짧은 시간 형식과 짧은 날짜 형식이 사용됩니다. 실행 코드에서 표시될 때는 시스템 로케일의 짧은 시간 형식과 짧은 날짜 형식이 사용되며, 이는 코드 로케일과 다를 수 있습니다. 이 예제에서는 영어/미국 로케일이 가정되었습니다. MyTime과 MyDate는 현재 시스템의 짧은 시간 설정과 짧은 날짜 설정을 사용하여 개발 환경에서 표시됩니다.
Sub TestFormatFunction()
Dim MyTime, MyDate, MyStr
MyTime = #5:04:23 PM#
MyDate = #1/27/1993#
' Returns current system time in the system-defined long time format.
MyStr = Format(Time, "Long Time")
Debug.Print "Current System Time (Long Time): " & MyStr
' Returns current system date in the system-defined long date format.
MyStr = Format(Date, "Long Date")
Debug.Print "Current System Date (Long Date): " & MyStr
MyStr = Format(MyTime, "h:m:s") ' Returns "17:4:23".
Debug.Print "Formatted MyTime (h:m:s): " & MyStr
MyStr = Format(MyTime, "hh:mm:ss am/pm") ' Returns "05:04:23 pm".
Debug.Print "Formatted MyTime (hh:mm:ss am/pm): " & MyStr
MyStr = Format(MyTime, "hh:mm:ss AM/PM") ' Returns "05:04:23 PM".
Debug.Print "Formatted MyTime (hh:mm:ss AM/PM): " & MyStr
MyStr = Format(MyDate, "dddd, mmm d yyyy") ' Returns "Wednesday, Jan 27 1993".
Debug.Print "Formatted MyDate (dddd, mmm d yyyy): " & MyStr
' If format is not supplied, a string is returned.
MyStr = Format(23) ' Returns "23".
Debug.Print "Formatted 23: " & MyStr
' User-defined formats.
MyStr = Format(5459.4, "##,##0.00") ' Returns "5,459.40".
Debug.Print "Formatted 5459.4 (##,##0.00): " & MyStr
MyStr = Format(334.9, "###0.00") ' Returns "334.90".
Debug.Print "Formatted 334.9 (###0.00): " & MyStr
MyStr = Format(5, "0.00%") ' Returns "500.00%".
Debug.Print "Formatted 5 (0.00%): " & MyStr
MyStr = Format("HELLO", "<") ' Returns "hello".
Debug.Print "Formatted 'HELLO' (<): " & MyStr
MyStr = Format("This is it", ">") ' Returns "THIS IS IT".
Debug.Print "Formatted 'This is it' (>): " & MyStr
End Sub
' Output
' Current System Time (Long Time): 12:56:06 PM
' Current System Date (Long Date): Tuesday, August 22, 2023
' Formatted MyTime (h:m:s): 17:4:23
' Formatted MyTime (hh:mm:ss am/pm): 05:04:23 pm
' Formatted MyTime (hh:mm:ss AM/PM): 05:04:23 PM
' Formatted MyDate (dddd, mmm d yyyy): Wednesday, Jan 27 1993
' Formatted 23: 23
' Formatted 5459.4 (##,##0.00): 5,459.40
' Formatted 334.9 (###0.00): 334.90
' Formatted 5 (0.00%): 500.00%
' Formatted 'HELLO' (<): hello
' Formatted 'This is it' (>): THIS IS IT
숫자 값에 따른 다양한 서식
숫자에 대한 사용자 정의 서식 표현식은 세미콜론으로 구분된 1~4개의 섹션을 가질 수 있습니다. 형식 인수에 명명된 숫자 형식 중 하나가 포함된 경우 하나의 섹션만 허용됩니다.
"$#,##0;($#,##0)"
세미콜론 사이에 아무것도 포함하지 않은 경우 누락된 섹션은 양수 값의 형식을 사용하여 인쇄됩니다. 예를 들어 다음 형식은 첫 번째 섹션의 형식을 사용하여 양수 및 음수 값을 표시하고 값이 0인 경우 "0"을 표시합니다.
"$#,##0;;\Z\e\r\o"
다양한 문자열 값에 대한 다양한 형식
문자열의 형식 표현식에는 세미콜론(;)으로 구분된 하나의 섹션 또는 두 개의 섹션이 있을 수 있습니다.
명명된 날짜/시간 형식
다음 표에는 미리 정의된 날짜 및 시간 형식 이름이 나와 있습니다.
예제 코드
Sub TestFormatDateAndTimeFormats()
Dim currentDate As Date
currentDate = Now
Dim formattedGeneralDate As String
formattedGeneralDate = Format(currentDate, "General Date") ' 일반 날짜 형식
Dim formattedLongDate As String
formattedLongDate = Format(currentDate, "Long Date") ' 긴 날짜 형식
Dim formattedMediumDate As String
formattedMediumDate = Format(currentDate, "Medium Date") ' 중간 날짜 형식
Dim formattedShortDate As String
formattedShortDate = Format(currentDate, "Short Date") ' 짧은 날짜 형식
Dim formattedLongTime As String
formattedLongTime = Format(currentDate, "Long Time") ' 긴 시간 형식
Dim formattedMediumTime As String
formattedMediumTime = Format(currentDate, "Medium Time") ' 중간 시간 형식
Dim formattedShortTime As String
formattedShortTime = Format(currentDate, "Short Time") ' 짧은 시간 형식
Debug.Print "일반 날짜 형식: " & formattedGeneralDate
Debug.Print "긴 날짜 형식: " & formattedLongDate
Debug.Print "중간 날짜 형식: " & formattedMediumDate
Debug.Print "짧은 날짜 형식: " & formattedShortDate
Debug.Print "긴 시간 형식: " & formattedLongTime
Debug.Print "중간 시간 형식: " & formattedMediumTime
Debug.Print "짧은 시간 형식: " & formattedShortTime
End Sub
' Output
' 일반 날짜 형식: 8/22/2023 3:22:40 PM
' 긴 날짜 형식: Tuesday, August 22, 2023
' 중간 날짜 형식: 22-Aug-23
' 짧은 날짜 형식: 8/22/2023
' 긴 시간 형식: 3:22:40 PM
' 중간 시간 형식: 03:22 PM
' 짧은 시간 형식: 15:22
명명된 숫자 형식
다음 표에는 미리 정의된 숫자 형식 이름이 나와 있습니다.
예제 코드
Sub TestFormatNumberAndBooleanFormats()
Dim numberValue As Double
numberValue = 123.6789
Dim formattedGeneralNumber As String
formattedGeneralNumber = Format(numberValue, "General Number") ' 일반 숫자 형식
Dim formattedCurrency As String
formattedCurrency = Format(numberValue, "Currency") ' 통화 형식
Dim formattedFixed As String
formattedFixed = Format(numberValue, "Fixed") ' 고정 소수점 형식
Dim formattedStandard As String
formattedStandard = Format(numberValue, "Standard") ' 표준 형식
Dim formattedPercent As String
formattedPercent = Format(numberValue / 1000, "0.00%") ' 백분율 형식
Dim formattedScientific As String
formattedScientific = Format(numberValue, "Scientific") ' 과학적 표기 형식
Dim booleanValue As Boolean
booleanValue = True
Dim formattedYesNo As String
formattedYesNo = Format(booleanValue, "Yes/No") ' 예/아니오 형식
Dim formattedTrueFalse As String
formattedTrueFalse = Format(booleanValue, "True/False") ' 참/거짓 형식
Dim formattedOnOff As String
formattedOnOff = Format(booleanValue, "On/Off") ' 켜짐/꺼짐 형식
Debug.Print "일반 숫자 형식: " & formattedGeneralNumber
Debug.Print "통화 형식: " & formattedCurrency
Debug.Print "고정 소수점 형식: " & formattedFixed
Debug.Print "표준 형식: " & formattedStandard
Debug.Print "백분율 형식: " & formattedPercent
Debug.Print "과학적 표기 형식: " & formattedScientific
Debug.Print "예/아니오 형식: " & formattedYesNo
Debug.Print "참/거짓 형식: " & formattedTrueFalse
Debug.Print "켜짐/꺼짐 형식: " & formattedOnOff
End Sub
' Output
'일반 숫자 형식: 123.6789
'통화 형식: $123.68
'고정 소수점 형식: 123.68
'표준 형식: 123.68
'백분율 형식: 12.37%
'과학적 표기 형식: 1.24E+02
'예/아니오 형식: Yes
'참/거짓 형식: True
'켜짐/꺼짐 형식: On
사용자 정의 문자열 형식
문자열에 대한 형식 표현식을 생성하려면 다음 문자 중 하나를 사용하십시오 .
사용자 정의 날짜/시간 형식
다음 표에는 사용자 정의 날짜/시간 형식을 만드는 데 사용할 수 있는 문자가 나와 있습니다.
사용자 정의 숫자 형식
다음 표에는 사용자 정의 숫자 형식을 만드는 데 사용할 수 있는 문자가 나와 있습니다.
도움말 출처
Format function (Visual Basic for Applications)
Office VBA reference topic
learn.microsoft.com
'VBA 라이브러리' 카테고리의 다른 글
FormatDateTime 함수 (0) | 2023.08.23 |
---|---|
FormatCurrency 함수 (0) | 2023.08.22 |
GetObject 함수 (0) | 2023.08.06 |
CreateObject 함수 (0) | 2023.08.06 |
String 함수 (0) | 2023.07.22 |