Format 函式(Visual Basic for Applications) | Microsoft Docs
文章推薦指數: 80 %
本文內容 · 語法 · 設定 · 註解 · 日期符號 · 時間符號 · 範例 · 不同數值的不同格式 · 不同字串值的不同格式 ...
跳到主要內容
已不再支援此瀏覽器。
請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。
下載MicrosoftEdge
其他資訊
目錄
結束焦點模式
儲存
編輯
共用
Twitter
LinkedIn
Facebook
電子郵件
WeChat
目錄
Format函式
發行項
06/07/2021
o
此頁面有所助益嗎?
請為您的體驗評分
Yes
No
還有其他意見反應嗎?
系統會將意見反應傳送給Microsoft:按下[提交]按鈕,您的意見反應將用來改善Microsoft產品和服務。
隱私權原則。
送出
謝謝。
本文內容
傳回Variant(字串),包含根據格式運算式中所包含的指示格式化的運算式。
注意
對於開發跨多個平台,擴充使用者Office體驗的解決方案感到興趣嗎?請參閱新的Office增益集模型。
與VSTO增益集和解決方案相比,Office增益集的佔用空間較小,而且您可以使用幾乎任何網頁程式技術(例如HTML5、JavaScript、CSS3和XML)來建立這些增益集。
語法
Format(Expression,[Format],[FirstDayOfWeek],[FirstWeekOfYear])
Format函式語法具有以下幾個部分。
部分
描述
運算式
必要。
任何有效運算式。
Format
選用。
有效的具名或使用者定義格式運算式。
FirstDayOfWeek
選用。
常數會指定每週的第一天。
FirstWeekOfYear
選用。
此常數會指定每年的第一週。
設定
_firstdayofweek_引數具有這些設定。
常數
值
描述
vbUseSystem
0
使用NLSAPI設定。
vbSunday
1
星期日(預設值)
vbMonday
2
星期一
vbTuesday
3
星期二
vbWednesday
4
星期三
vbThursday
5
星期四
vbFriday
6
星期五
vbSaturday
7
星期六
Firstweekofyear引數具有這些設定。
常數
值
描述
vbUseSystem
0
使用NLSAPI設定。
vbFirstJan1
1
從1月1日發生當週開始(預設值)。
vbFirstFourDays
2
從年度中至少有四天的第一週開始。
vbFirstFullWeek
3
從該年第一個完整的一週開始。
註解
若要格式化
執行
數字
使用預先定義的具名數值格式,或建立使用者定義數值格式。
日期和時間
使用預先定義的具名的日期/時間格式,或建立使用者定義日期/時間格式。
日期和時間序號
使用日期和時間格式或數值格式。
字串
建立您自己的使用者定義字串格式。
Format會將format截斷為257個字元。
若您嘗試格式化而不指定格式__,Format會提供類似Str函式的功能,不過Format函式具有國別設定感知。
不過,使用Format函式將正數格式化成字串,不會包含保留給值符號的前置空格;使用Str函式來轉換的正數,則會保留前置空格。
如果您正要格式化未當地語系化的數值字串,應該使用使用者定義的數值格式,以確保您取得想要的外觀。
注意
如果Calendar屬性設定值是Gregorian,且[格式]__已指定日期格式,則提供的[運算式]__必須是Gregorian。
如果VisualBasicCalendar屬性設定值是Hijri,則提供的[運算式]__必須是Hijri。
如果行事曆為西曆,[格式運算式]__符號的意義維持不變。
如果月曆屬性為回曆,如果行事曆為回曆,所有的日期格式符號(例如dddd、mmmm、yyyy)仍具有相同的意義,但會套用回曆行事曆。
格式符號會維持英文;會產生文字顯示的符號(如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(一小時的分鐘,沒有前置零)。
只要前面加上h或hh
mm
00-59(一小時內的分鐘,具有前置零)。
只要前面加上h或hh
s
0-59(一分鐘的秒鐘,沒有前置零)
ss
00-59(一分鐘內的秒鐘,具有前置零)
範例
這個範例會顯示Format函式的各種用法,使用具名格式和使用者定義格式,來格式化值。
針對日期分隔符號(/)、時間分隔符號(:)和AM/PM常值,您的系統所顯示的實際輸出結果,是取決於執行程式碼的地區設定。
在開發環境中顯示時間和日期時,會使用程式碼地區設定的簡短時間格式和簡短日期格式。
當按照正在執行的程式碼顯示時,會使用系統地區設定的簡短時間格式和簡短日期格式,可能會與程式碼地區設定有所差異。
在此範例中,假設為英文/美國。
MyTime和MyDate會使用目前的系統簡短時間設定和簡短日期設定,在開發環境中顯示。
DimMyTime,MyDate,MyStr
MyTime=#17:04:23#
MyDate=#January27,1993#
'Returnscurrentsystemtimeinthesystem-definedlongtimeformat.
MyStr=Format(Time,"LongTime")
'Returnscurrentsystemdateinthesystem-definedlongdateformat.
MyStr=Format(Date,"LongDate")
MyStr=Format(MyTime,"h:m:s")'Returns"17:4:23".
MyStr=Format(MyTime,"hh:mm:ssam/pm")'Returns"05:04:23pm".
MyStr=Format(MyTime,"hh:mm:ssAM/PM")'Returns"05:04:23PM".
MyStr=Format(MyDate,"dddd,mmmdyyyy")'Returns"Wednesday,Jan271993".
'Ifformatisnotsupplied,astringisreturned.
MyStr=Format(23)'Returns"23".
'User-definedformats.
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"THISISIT".
不同數值的不同格式
使用者定義的數字格式運算式,可以擁有一到四個區段,由分號分隔。
如果格式的引數包含某一種具名數值格式,則只能允許一個區段。
如果您使用
其結果是
只有一個區段
格式運算式會套用到所有的值。
兩個區段
第一個區段會套用到正值和零,第二個會套用到負值。
三個區段
第一個區段會套用到正值,第二個會套用到負值,而第三個會套用到零。
四個區段
第一個區段會套用到正值,第二個會套用到負值,第三個會套用到零,而第四個會套用到Null值。
"$#,##0;($#,##0)"
如果您在區段之間以分號相連,則會使用正數值的格式來列印遺漏的區段。
例如,下列的格式會使用第一個區段中的格式來顯示正數和負數的值,而如果值為零,則會顯示「零」。
"$#,##0;;\Z\e\r\o"
不同字串值的不同格式
字串的格式運算式,可以擁有一個或兩個區段,由分號(;)分隔。
如果您使用
其結果是
只有一個區段
格式會套用到所有的字串資料。
兩個區段
第一個區段會套用到到字串資料,第二個會套用到Null值和零長度字串("")。
具名的日期/時間格式
下表列出預先定義的日期與時間格式名稱。
格式名稱
描述
一般日期
顯示日期和/或時間,例如4/3/9305:34PM。
如果沒有分數部分,則只會顯示日期,例如,4/3/93。
如果沒有整數部分,則只會顯示時間,例如,05:34PM。
日期的顯示是由系統設定所決定。
完整日期
根據您系統的完整日期格式來顯示日期。
適中日期
使用適合主應用程式語言版本的適中日期格式來顯示日期。
簡短日期
使用您系統的簡短日期格式來顯示日期。
完整時間
使用您系統的完整時間格式來顯示時間;包括小時、分鐘、秒。
適中時間
使用小時、分鐘和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
將日顯示為縮寫(週日–週六)。
當地語系化。
dddd
將日顯示為完整的名稱(星期日–星期六)。
當地語系化。
ddddd
根據您系統的簡短日期格式設定,將日期顯示為完整日期(包括日、月和年)。
預設的簡短日期格式是m/d/yy。
dddddd
根據您系統所辨識的完整日期格式設定來格式化,將日期序號顯示為完整日期(包括日、月和年)。
預設的完整日期格式是mmmmdd,yyyy。
w
以數字顯示星期幾(1代表星期日到7代表星期六)。
ww
以數字顯示一年中的週(1–54)。
m
將月份顯示為沒有前置零的數字(1–12)。
如果m緊接在h或hh後面,則會顯示分鐘,而不是月份。
mm
將月份顯示為具有前置零的數字(01–12)。
如果m緊接在h或hh後面,則會顯示分鐘,而不是月份。
mmm
將月份顯示為縮寫(Jan–Dec)。
當地語系化。
mmmm
將月份顯示為完整的月份名稱(一月–十二月)。
當地語系化。
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:00A.M.或P.M.之前,則會將前置字元顯示為零。
預設時間格式是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字串常值;對任何中午到下午11:59之間的小時,則顯示您系統所定義的PM字串常值。
AMPM可以是大寫或小寫,但顯示字串的大小寫,會符合您系統設定所定義的字串。
預設的格式是AM/PM。
如果您的系統設定為24小時制,字串通常會設定為零長度的字串。
使用者定義的數值格式
下表列出可用來建立使用者定義數值格式的字元。
字元
描述
無
顯示沒有格式的數字。
(0)
數字預留位置。
顯示數字或零。
如果運算式有數字位在格式字串中出現0的位置,則顯示該字元;否則在該位置顯示零。
如果格式運算式中,數字(在小數點的任一邊)的位數比零的位數還少,則顯示前置零或行尾零。
如果格式運算式中,數字在小數分隔符號右邊的位數比零的位數還多,將數字的小數位數四捨五入,以顯示所有位數的零。
如果格式運算式中,數字在小數分隔符號左邊的位數比零的位數還多,則顯示多餘的數字而不做修改。
(#)
數字預留位置。
會顯示數字或不顯示任何項目。
如果運算式有數字位在格式字串中出現#的位置,則顯示該字元;否則在該位置不顯示任何項目。
此符號的作用就像0數字預留位置,不同之處在於,如果在格式運算式中,數字在小數分隔符號任一邊的位數,與#字元的位數相同或更少,則不會顯示前置零或行尾零。
(.)
小數點預留位置。
在某些地區設定中,逗號會用作小數分隔符號。
小數點預留位置會決定小數分隔符號的左側和右側,要顯示多少位數字。
如果格式運算式中,這個符號的左邊只包含數字記號,則小於1的數字會以小數分隔符號開始。
若要顯示具有百分比值的前置零,請使用0作為小數點分隔符號左邊的第一個數字預留位置。
輸出結果中實際用作小數點預留位置的字元,會取決於您系統所辨識的[數字格式]。
(%)
百分比預留位置。
運算式會乘以100。
百分比字元(%)會插入其在格式字串中所出現的位置上。
(,)
千位分隔符號。
在某些地區設定中,句號會用作千位分隔符號。
在數字內小數分隔符號的左側有四位數或更多時,千位分隔符號會分隔千位數和百位數。
千位分隔符號的標準用法,是指定格式是否包含由數字預留位置括住的千位分隔符號(0或#)。
兩個相鄰的千位分隔符號,或緊接在小數分隔符號左側的千位分隔符號(無論是否指定小數點),表示「將數值除以1000來進位,視需要四捨五入」。
例如,您可以使用格式字串"##0,,",以100來代表一億。
小於1百萬的數字會顯示為0。
兩個相鄰的千位分隔符號,若不是緊接在小數分隔符號左側,而是其他任何位置時,將視為只是指定千位分隔符號的用法。
輸出結果中實際用作千位分隔符號的字元,會取決於您系統所辨識的[數字格式]。
(:)
時間分隔符號。
在某些地區設定中,其他字元可能會用來表示時間分隔符號。
當時間值已格式化時,時間分隔符號會分隔小時、分鐘和秒。
出結果中實際用作時間分隔符號的字元,是由系統設定所決定。
(/)
日期分隔符號。
在某些地區設定中,其他字元可能會用來表示日期分隔符號。
當日期值已格式化時,日期分隔符號會分隔日、月和年。
輸出結果中實際用作日期分隔符號的字元,是由系統設定所決定。
(E-E+e-e+)
科學記號格式。
如果格式運算式中,在E-、E+、e-或e+的右側,包含了至少一個數字預留位置(0或#)時,數字會以科學記號格式顯示,並在數字與其指數之間插入E或e。
數字預留位置右側的數字,會決定指數中數字的位數。
使用E-或e-在負指數的旁邊加上減號。
使用E+或e+在負指數的旁邊加上減號,並在正指數的旁邊加上加號。
-+$()
顯示常值字元。
若要顯示以上所列以外的字元,請在它前面加入反斜線(\),或以雙引號將其括住("")。
(\)
顯示格式字串中的下一個字元。
若要顯示的字元,像常值字元一樣具有特殊意義,請在它前面加入反斜線(\)。
反斜線本身不會顯示。
使用反斜線等同於將後面的字元括在雙引號裡。
若要顯示反斜線,使用兩個反斜線(\\)。
無法顯示為常值字元的字元範例,是日期格式和時間格式字元(a、c、d、h、m、n、p、q、s、t、w、y、/和:)、數值格式字元(#、0、%、E、e、逗號和句號)以及字串格式字元(@、&、、和!)。
("ABC")
顯示雙引號("")內的字串。
若要在程式碼內將字串包含在[格式]__中,您必須使用Chr(34)來括住文字(34是引號(")的字元碼)。
另請參閱
函式(VisualBasicforApplications)
支援和意見反應
有關於OfficeVBA或這份文件的問題或意見反應嗎?如需取得支援服務並提供意見反應的相關指導,請參閱OfficeVBA支援與意見反應。
本文內容
延伸文章資訊
- 1vba 中怎么把字符串转化成日期类型 - 百度知道
2016-06-08 excel vba 的sql语句如何把文本型字段转为日期格式... 2010-01-03 求助!关于使用vba进行日期格式转换的请教; 2017-11-26 ...
- 2字串轉日期的問題- Excelㄧ般區
文字檔匯入,日期格式為mm/dd/yyyy ,但是excel一直把它當成字串,有檢查過沒有包含空白字元, 請問該如何以不使用vba的方式直接轉換成日期格式呢?
- 3Format 函式(Visual Basic for Applications) | Microsoft Docs
本文內容 · 語法 · 設定 · 註解 · 日期符號 · 時間符號 · 範例 · 不同數值的不同格式 · 不同字串值的不同格式 ...
- 4string - VBA-转换为日期 - IT工具网
原文 标签 string excel vba excel-vba date-conversion. 我又有一个问题: 我想从字符串转换为VBA中的日期 字符串如下:YYYY-DD-MM 日期应类...
- 5[Excel VBA]輸入yyyymmdd直接轉換成日期格式,已有初步程式碼
有選定範圍(A:A),然後在該範圍內,輸入長度為8的字串Len(Target.Cells) = 8,就會觸發。 0. 引言; 留言.