Format 函式

傳回 Variant (字串),包含根據格式運算式中所包含的指示格式化的運算式

注意事項

對於開發跨多個平台,擴充使用者 Office 體驗的解決方案感到興趣嗎? 請參閱新的 Office 增益集模型。 與 VSTO 增益集和解決方案相比,Office 增益集的佔用空間較小,而且您可以使用幾乎任何網頁程式技術 (例如 HTML5、JavaScript、CSS3 和 XML) 來建立這些增益集。

語法

Format(Expression, [ Format ], [ FirstDayOfWeek ], [ FirstWeekOfYear ])

Format 函式語法具有以下幾個部分。

部分 描述
運算式 必要。 任何有效運算式。
Format 選用。 有效的具名或使用者定義格式運算式。
FirstDayOfWeek 選用。 常數會指定每週的第一天。
FirstWeekOfYear 選用。 此常數會指定每年的第一週。

設定

firstdayofweek變數具有這些設定。

常數 描述
vbUseSystem 0 使用 NLS API 設定。
vbSunday 1 星期日 (預設值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

firstweekofyear變數具有這些設定。

常數 描述
vbUseSystem 0 使用 NLS API 設定。
vbFirstJan1 1 從 1 月 1 日發生當週開始 (預設值)。
vbFirstFourDays 2 從年度中至少有四天的第一週開始。
vbFirstFullWeek 3 從該年第一個完整的一週開始。

註解

若要格式化 執行
數字 使用預先定義的具名數值格式,或建立使用者定義數值格式。
日期和時間 使用預先定義的具名的日期/時間格式,或建立使用者定義日期/時間格式。
日期和時間序號 使用日期和時間格式或數值格式。
字串 建立您自己的使用者定義字串格式。

Format 會將 format 截斷為 257 個字元。

若您嘗試格式化而不指定格式Format 會提供類似 Str 函式的功能,不過 Format 函式具有國別設定感知。 不過,使用 Format 函式將正數格式化成字串,不會包含保留給值符號的前置空格;使用 Str 函式來轉換的正數,則會保留前置空格。

如果您正要格式化未當地語系化的數值字串,應該使用使用者定義的數值格式,以確保您取得想要的外觀。

注意事項

如果 Calendar 屬性設定值是 Gregorian,且 [格式] 已指定日期格式,則提供的 [運算式] 必須是 Gregorian。 如果 Visual Basic Calendar 屬性設定為 Hijri,則提供的 表示式 必須是 Hijri

如果行事曆為西曆,[格式運算式] 符號的意義維持不變。 如果月曆屬性為回曆,如果行事曆為回曆,所有的日期格式符號 (例如 ddddmmmmyyyy) 仍具有相同的意義,但會套用回曆行事曆。 格式符號會維持英文;會產生文字顯示的符號 (如 AM 和 PM),則會顯示與該符號相關聯的字串 (英文或阿拉伯文)。 若行事曆是回曆,某些符號的範圍會有所變更。

日期符號

符號 範圍
d 1-31 (月份日期,沒有前置零)
dd 01-31 (一個月中的日,具有前置零)
w 1-7 (星期幾,從星期日 = 1 開始)
ww 1-53 (一年中的週,沒有前置零;第 1 週從 1 月 1 日開始)
m 1-12 (一年中的月,沒有前置零;從 1 月 = 1 開始)
mm 01-12 (一年中的月,具有前置零;從 1 月 = 01 開始)
mmm 顯示縮寫月份名稱 (回曆月份名稱沒有任何縮寫)
mmmm 顯示完整月份名稱
y 1-366 (一年中的日)
yy 00-99 (年度的最後兩位數)
yyyy 100-9999 (三或四位數的年度)

時間符號

符號 範圍
h 0-23 (附加 "AM" 或 "PM" 的 1-12) (一天中的鐘點,沒有前置零)
hh 00-23 (附加 "AM" 或 "PM" 的 01-12) (一天中的鐘點,具有前置零)
n 0-59 (一小時的分鐘,沒有前置零)
nn 00-59 (一小時內的分鐘,具有前置零)
m 0-59 (一小時的分鐘,沒有前置零)。 只要前面加上 hhh
mm 00-59 (一小時內的分鐘,具有前置零)。 只要前面加上 hhh
s 0-59 (一分鐘的秒鐘,沒有前置零)
ss 00-59 (一分鐘內的秒鐘,具有前置零)

範例

這個範例會顯示 Format 函式的各種用法,使用具名格式和使用者定義格式,來格式化值。 針對日期分隔符號 (/)、時間分隔符號 (:) 和 AM / PM 常值,您的系統所顯示的實際輸出結果,是取決於執行程式碼的地區設定。 在開發環境中顯示時間和日期時,會使用程式碼地區設定的簡短時間格式和簡短日期格式。 當按照正在執行的程式碼顯示時,會使用系統地區設定的簡短時間格式和簡短日期格式,可能會與程式碼地區設定有所差異。 在此範例中,假設為英文/美國。 MyTimeMyDate 會使用目前的系統簡短時間設定和簡短日期設定,在開發環境中顯示。

Dim MyTime, MyDate, MyStr
MyTime = #17:04:23#
MyDate = #January 27, 1993#

' Returns current system time in the system-defined long time format.
MyStr = Format(Time, "Long Time")

' Returns current system date in the system-defined long date format.
MyStr = Format(Date, "Long Date")

MyStr = Format(MyTime, "h:m:s")    ' Returns "17:4:23".
MyStr = Format(MyTime, "hh:mm:ss am/pm")    ' Returns "05:04:23 pm".
MyStr = Format(MyTime, "hh:mm:ss AM/PM")    ' Returns "05:04:23 PM".
MyStr = Format(MyDate, "dddd, mmm d yyyy")    ' Returns "Wednesday, Jan 27 1993".
' If format is not supplied, a string is returned.
MyStr = Format(23)    ' Returns "23".

' User-defined formats.
MyStr = Format(5459.4, "##,##0.00")    ' Returns "5,459.40".
MyStr = Format(334.9, "###0.00")    ' Returns "334.90".
MyStr = Format(5, "0.00%")    ' Returns "500.00%".
MyStr = Format("HELLO", "<")    ' Returns "hello".
MyStr = Format("This is it", ">")    ' Returns "THIS IS IT".

不同數值的不同格式

使用者定義的數字格式運算式,可以擁有一到四個區段,由分號分隔。 如果格式的引數包含某一種具名數值格式,則只能允許一個區段。

如果您使用 其結果是
只有一個區段 格式運算式會套用到所有的值。
兩個區段 第一個區段會套用到正值和零,第二個會套用到負值。
三個區段 第一個區段會套用到正值,第二個會套用到負值,而第三個會套用到零。
四個區段 第一個區段會套用到正值,第二個會套用到負值,第三個會套用到零,而第四個會套用到 Null 值。
"$#,##0;($#,##0)"

如果您在區段之間以分號相連,則會使用正數值的格式來列印遺漏的區段。 例如,下列的格式會使用第一個區段中的格式來顯示正數和負數的值,而如果值為零,則會顯示「零」。

"$#,##0;;\Z\e\r\o"

不同字串值的不同格式

字串的格式運算式,可以擁有一個或兩個區段,由分號 (;) 分隔。

如果您使用 其結果是
只有一個區段 格式會套用到所有的字串資料。
兩個區段 第一個區段會套用到到字串資料,第二個會套用到 Null 值和零長度字串 ("")。

具名的日期/時間格式

下表列出預先定義的日期與時間格式名稱。

格式名稱 描述
一般日期 顯示日期和/或時間,例如 4/3/93 05:34 PM。 如果沒有分數部分,則只會顯示日期,例如,4/3/93。 如果沒有整數部分,則只會顯示時間,例如,05:34 PM。 日期的顯示是由系統設定所決定。
完整日期 根據您系統的完整日期格式來顯示日期。
適中日期 使用適合主應用程式語言版本的適中日期格式來顯示日期。
簡短日期 使用您系統的簡短日期格式來顯示日期。
完整時間 使用您系統的完整時間格式來顯示時間;包括小時、分鐘、秒。
適中時間 使用小時、分鐘和 AM/PM 指示項,以 12 小時制格式來顯示時間。
簡短時間 使用 24 小時制格式來顯示時間,例如 17:45。

具名的數值格式

下表列出預先定義的數值格式名稱。

格式名稱 描述
通用數字 顯示沒有千位分隔符號的數字。
貨幣 顯示具有千位分隔符號的數字 (若適用);在小數分隔符號的右邊顯示兩位數。 根據系統的地區設定來輸出。
固定 在小數分隔符號的左邊,顯示至少一位數;在小數分隔符號的右邊顯示兩位數。
Standard 顯示具有千位分隔符號的數字;在小數分隔符號的左邊,顯示至少一位數;在小數分隔符號的右邊顯示兩位數。
百分比 顯示乘以 100 並在右邊附加百分比符號 (%) 後的數字;永遠在小數分隔符號的右邊顯示兩位數。
科學記號 使用標準科學記號標記法。
Yes/No 如果數字是 0,則顯示 [否];否則,顯示 [是]。
True/False 如果數字是 0,則顯示 False;否則,顯示 True
開/關 如果數字是 0,則顯示 [關];否則,顯示 [開]。

使用者定義的字串格式

化您可以使用任何下列字元建立字串的格式化運算式

字元 描述
@ 字元預留位置。 顯示字元或空格。 如果字串有字元位在格式字串中出現 @ 符號的位置,則顯示該字元;否則在該位置顯示空格。 除非在格式字串中有驚嘆號字元 (!),否則預留位置是由右至左填入。
& 字元預留位置。 會顯示字元或不顯示任何項目。 如果字串有字元位在格式字串中出現 & 符號的位置,則顯示該字元;否則在該位置不顯示任何項目。 除非在格式字串中有驚嘆號字元 (!),否則預留位置是由右至左填入。
< 強制小寫。 以小寫格式顯示所有字元。
> 強制大寫。 以大寫格式顯示所有字元。
! 強制由左到右填入預留位置。 依預設是由右至左填入預留位置。

使用者定義的日期/時間格式

下表列出可用來建立使用者定義日期/時間格式的字元。

字元 描述
(:) 時間分隔符號。 在某些地區設定中,其他字元可能會用來表示時間分隔符號。 當時間值已格式化時,時間分隔符號會分隔小時、分鐘和秒。 出結果中實際用作時間分隔符號的字元,是由系統設定所決定。
(/) 日期分隔符號。 在某些地區設定中,其他字元可能會用來表示日期分隔符號。 當日期值已格式化時,日期分隔符號會分隔日、月和年。 輸出結果中實際用作日期分隔符號的字元,是由系統設定所決定。
c 依照順序顯示日期為 ddddd,並顯示時間為 ttttt。 如果日期序號沒有分數部分,則只會顯示日期資訊;如果沒有整數部分,則只會顯示時間資訊。
d 將日期顯示為沒有前置零的數位 (1–31) 。
dd 將日期顯示為前置零 (01–31) 的數位。
ddd 將日顯示為 Sun–Sat) (縮寫。 當地語系化。
dddd 以完整名稱顯示日 (星期日-星期六) 。 當地語系化。
ddddd 根據您系統的簡短日期格式設定,將日期顯示為完整日期 (包括日、月和年)。 預設的簡短日期格式是 m/d/yy
dddddd 根據您系統所辨識的完整日期格式設定來格式化,將日期序號顯示為完整日期 (包括日、月和年)。 預設的完整日期格式是 mmmm dd, yyyy
w 以數字顯示星期幾 (1 代表星期日到 7 代表星期六)。
ww 將一年中的周顯示為數位 (1–54) 。
m 將月份顯示為沒有前置零的數位 (1–12) 。 如果 m 緊接在 hhh 後面,則會顯示分鐘,而不是月份。
mm 將月份顯示為前置零 (01–12) 的數位。 如果 m 緊接在 hhh 後面,則會顯示分鐘,而不是月份。
mmm 將月份顯示為 Jan-Dec) (縮寫。 當地語系化。
mmmm 在 1 月到 12 月) (以完整月份名稱顯示月份。 當地語系化。
q 將一年中的季度顯示為數位 (1-4) 。
y 將一年中的日期顯示為數位 (1–366) 。
yy 將年份顯示為 2 位數的數位 (00–99) 。
yyyy 將年份顯示為 4 位數的數位 (100–9999) 。
h 將小時顯示為沒有前置零的數位 (0–23) 。
hh 將小時顯示為前置零 (00–23) 的數位。
n 將分鐘顯示為沒有前置零的數位 (0–59) 。
nn 將分鐘顯示為前置零 (00–59) 的數位。
s 將第二個顯示為沒有前置零的數位 (0–59) 。
ss 將第二個數字顯示為前置零 (00–59) 。
ttttt 使用由系統所辨識的時間格式所定義的時間分隔符號來格式化,將時間顯示為完整時間 (包括小時、分鐘和秒)。 如果選取前置零選項,且時間是在上午 10:00 或下午 10:00 之前,則會顯示前置零。預設時間格式為 h:mm:ss
AM/PM 使用 12 小時制,並且對任何中午之前的小時,顯示大寫的 AM;對任何中午到下午 11:59 之間的小時,則顯示大寫的 PM。
am/pm 使用 12 小時制,並且對任何中午之前的小時,顯示小寫的 am;對任何中午到下午 11:59 之間的小時,則顯示小寫的 pm。
A/P 使用 12 小時制,並且對任何中午之前的小時,顯示大寫的 A;對任何中午到下午 11:59 之間的小時,則顯示大寫的 P。
a/p 使用 12 小時制,並且對任何中午之前的小時,顯示小寫的 a;對任何中午到下午 11:59 之間的小時,則顯示小寫的 p。
AMPM 使用 12 小時制,並顯示 AM 字串常值 ,如您的系統在中午之前的任何小時所定義;顯示系統所定義的PM字串常值,時間介於中午到下午11:59之間的任何小時。AMPM可以是大寫或小寫,但顯示的字串大小寫符合系統設定所定義的字串。 預設的格式是 AM/PM。 如果您的系統設定為 24 小時制,字串通常會設定為零長度的字串。

使用者定義的數值格式

下表列出可用來建立使用者定義數值格式的字元。

字元 描述
顯示沒有格式的數字。
(0) 數字預留位置。 顯示數字或零。 如果運算式有數字位在格式字串中出現 0 的位置,則顯示該字元;否則在該位置顯示零。如果格式運算式中,數字 (在小數點的任一邊) 的位數比零的位數還少,則顯示前置零或行尾零。 如果格式運算式中,數字在小數分隔符號右邊的位數比零的位數還多,將數字的小數位數四捨五入,以顯示所有位數的零。 如果格式運算式中,數字在小數分隔符號左邊的位數比零的位數還多,則顯示多餘的數字而不做修改。
(#) 數字預留位置。 會顯示數字或不顯示任何項目。 如果運算式有數字位在格式字串中出現 # 的位置,則顯示該字元;否則在該位置不顯示任何項目。 此符號的作用就像 0 數字預留位置,不同之處在於,如果在格式運算式中,數字在小數分隔符號任一邊的位數,與 # 字元的位數相同或更少,則不會顯示前置零或行尾零。
(.) 小數點預留位置。 在某些地區設定中,逗號會用作小數分隔符號。 小數點預留位置會決定小數分隔符號的左側和右側,要顯示多少位數字。 如果格式運算式中,這個符號的左邊只包含數字記號,則小於 1 的數字會以小數分隔符號開始。 若要顯示具有百分比值的前置零,請使用 0 作為小數點分隔符號左邊的第一個數字預留位置。 輸出結果中實際用作小數點預留位置的字元,會取決於您系統所辨識的 [數字格式]。
(%) 百分比預留位置。 運算式會乘以 100。 百分比字元 (%) 會插入其在格式字串中所出現的位置上。
(,) 千位分隔符號。 在某些地區設定中,句號會用作千位分隔符號。 在數字內小數分隔符號的左側有四位數或更多時,千位分隔符號會分隔千位數和百位數。 千位分隔符號的標準用法,是指定格式是否包含由數字預留位置括住的千位分隔符號 (0#)。 兩個相鄰的千位分隔符或緊接在小數分隔符左邊的千位分隔符, (是否指定小數點) 表示「將數位除以 1000,視需要四捨五入」。例如,您可以使用格式字串 “##0,”,將 1 億表示為 100。 小於 1 百萬的數字會顯示為 0。 兩個相鄰的千位分隔符號,若不是緊接在小數分隔符號左側,而是其他任何位置時,將視為只是指定千位分隔符號的用法。 輸出結果中實際用作千位分隔符號的字元,會取決於您系統所辨識的 [數字格式]。
(:) 時間分隔符號。 在某些地區設定中,其他字元可能會用來表示時間分隔符號。 當時間值已格式化時,時間分隔符號會分隔小時、分鐘和秒。 出結果中實際用作時間分隔符號的字元,是由系統設定所決定。
(/) 日期分隔符號。 在某些地區設定中,其他字元可能會用來表示日期分隔符號。 當日期值已格式化時,日期分隔符號會分隔日、月和年。 輸出結果中實際用作日期分隔符號的字元,是由系統設定所決定。
(E- E+ e- e+) 科學記號格式。 如果格式運算式中,在 E-、E+、e- 或 e+ 的右側,包含了至少一個數字預留位置 (0#) 時,數字會以科學記號格式顯示,並在數字與其指數之間插入 E 或 e。 數字預留位置右側的數字,會決定指數中數字的位數。 使用 E- 或 e- 在負指數的旁邊加上減號。 使用 E+ 或 e+ 在負指數的旁邊加上減號,並在正指數的旁邊加上加號。
- + $ ( ) 顯示常值字元。 若要顯示以上所列以外的字元,請在它前面加入反斜線 (\),或以雙引號將其括住 (" ")。
(\) 顯示格式字串中的下一個字元。 若要顯示的字元,像常值字元一樣具有特殊意義,請在它前面加入反斜線 (\)。 反斜線本身不會顯示。 使用反斜線等同於將後面的字元括在雙引號裡。 若要顯示反斜線,使用兩個反斜線 (\\)。 無法顯示為常值字元的字元範例包括日期格式設定和時間格式設定字元 (、 c、d、h、m、n、p、q、s、t、w、y、/和 :) 、數值格式字元 (#、0、%、E、e、逗號和句號) ,以及字元串格式字元 (@、&、 <、 >和 !) 。
("ABC") 顯示雙引號 ("") 內的字串。 若要在程式碼內將字串包含在 [格式] 中,您必須使用 Chr(34) 來括住文字 (34 是引號 (") 的字元碼)。

另請參閱

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應