添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

vbaformat_VBA 格式化字符串(format)

VBA 的 Format 函数与工作表函数 TEXT 用法基本相同,但功能更加强大,许多格式只能用于VBA 的 Format


函数,而不能用于工作表函数 TEXT ,以下是本人归纳的几点用法,希望对学习VBA有所裨益。


Format(值,格式(可选参数))


一、数字格式:


1、General Number:普通数字,可以用来去掉千位分隔号和无效 0 。


如:Format("1,234,567.80", "General Number")="1234567.8"


2、Currency:货币类型,可添加千位分隔号和货币符号,保留两位小数点。


如:Format(1234567, "Currency")="¥1,234,567.00"


3、Fixed:格式为带两位小数的数字。


如:Format("123456", "Fixed")=123456.00


4、Standard:标准,即带千位分隔号和两位小数。


如:Format("123456", "Standard")=123,456.00


5、Percent:带两位小数点的百分数。


如:Format("123456", "Percent")=12345600.00


6、Scientific:科学记数法。


如:Format("1234567", "Scientific")=1.23E+06


7、Yes/No:当数值为非 0 数字时返回 Yes ,否则返回 No 。


"如:Format(-3.14, "Yes/No")="Yes"


Format(0,


"Yes/No")="No"


8、True/False:当数值为非 0 数字时返回 True ,否则返回 False 。


与第7点类似,这里不再举例。


9、On/Off:当数值为非 0 数字时返回 On ,否则返回 Off 。


与第7点类似,这里不再举例。


10、""或省略:返回原值,但去除了小数点前后的无效 0 。


如:Format("0.1030", "")=".103"


11、0:占位格式化,不足位时补足 0 。


"如:Format(123, "0000")="0123"


Format$(12.3,


"0.00")="12.30"


12、#:占位格式化,不足位时不补足 0 。


如:Format(123, "####")=123


13、%:转化为百分数,一个%代表乘以 100 。


如:Format(1.23, "0.00%")=123.00%


Format(1.23,


"0.00%%")=12300.00%%


14、\:强制显示某字符。


如:Format$(12.34, "\R\M\B .00")="RMB 12.34"


15、;(分号):分段显示不同格式


比如要把正数显示为“正”,负数显示为“负”,0显示为“零”,参数为"正;负;零"


如:Format$(123, "正;负;零")="正"


第1段为正数格式,第2段为负数格式,第3段为0格式。


二、日期和时间格式:


1、固定格式参数


General Date:基本类型


如:Format("2010-5-1 9:8:5", "General Date")="2010/5/1


9:08:05"


Long Date:操作系统定义的长日期


如:Format("2010-5-1 9:8:5", "Long Date")=2010年5月1日


Medium Date:中日期


如:Format("2010-5-1 9:8:5", "Medium Date")=10-05-01


Short Date:操作系统定义的短日期


如:Format("2010-5-1 9:8:5", "Short Date")=2010-5-1


Long Time:操作系统定义的长时间


如:Format("2010-5-1 9:8:5", "Long Time")=9:08:05


Medium Time:带AM/PM(上午/下午)的12小时制,不带秒


如:Format("2010-5-1 9:8:5", "Medium Time")=09:08 上午


Short Time:24时制的时间,不带秒


如:Format("2010-5-1 9:8:5", "Short Time")=09:08


2、自定义格式


C:格式化为国标的日期和时间


如:Format("2010-5-1 9:8:5", "c")=2010/5/1 9:08:05


y:一年中的第几天(1-366)


如:Format("2010-5-1 9:8:5", "y")=121


yy:两位数的年份(00-99)


如:Format("2010-5-1 9:8:5", "yy")=10


yyy:上面的 yy 与 y 结合在一起


"如:Format("2010-5-1 9:8:5", "yyy")=10121


Format("2010-5-1 9:8:5",


"yy年第y天")=10年第121天


yyyy:四位数的年份(0100-9999)


如:Format("2010-5-1 9:8:5", "yyyy")=2010


d:一个月中的第几天(1-31)


如:Format("2010-5-1 9:8:5", "d")=1


dd:与 d 相同,但不足两位时补足 0 如:Format("2010-5-1 9:8:5", "dd")=01


ddd:三个英文字母表示的星期几


如:Format("2010-5-1 9:8:5", "ddd")="Sat"


dddd:英文表示的星期几


如:Format("2010-5-1 9:8:5", "dddd")="Saturday"


ddddd:显示标准日期


如:Format("2010-5-1 9:8:5", "ddddd")=2010/5/1


dddddd:长日期


如:Format("2010-5-1 9:8:5", "dddddd")=2010年5月1日


w:一个星期中的第几天(始于周日,周日为1)


如:Format("2010-5-1 9:8:5", "w")=7


ww:一年中的第几周


如:Format("2010-5-1 9:8:5", "ww")=18


m:月份数(当用于时间时,也可以表时为分钟)


如:Format("2010-5-1 9:8:5", "m")=5


mm:当小于10时带前导0的月数(当用于时间时,也可以表示为两位数的分钟数)


如:Format("2010-5-1 9:8:5", "mm")=05


mmm:三个英文字母表示的月份数


如:Format("2010-1-1 9:8:5", "mmm")="Jan"


mmmm:英文表示的月份数


如:Format("2010-1-1 9:8:5", "mmmm")="January"


q:一年中的第几季(1-4)


如:Format("2010-5-1 9:8:5", "q")=2


aaa:中文表示的周几


如:Format("2010-5-1 9:8:5", "aaa")=周六


aaaa:中文表示的星期几


如:Format("2010-5-1 9:8:5", "aaaa")=星期六


h:小时数(0-23)


如:Format("2010-5-1 9:8:5", "h")=9


h:两位数表示的小时数


如:Format("2010-5-1 9:8:5", "hh")=09


n:分钟数(0-59)


如:Format("2010-5-1 9:8:5", "n")=8


nn:两位数表示的分钟数(00-59)


如:Format("2010-5-1 9:8:5", "nn")=08


s:秒数(0-59)


如:Format("2010-5-1 9:8:5", "s")=5


ss:两位数表示的秒数(00-59)


如:Format("2010-5-1 9:8:5", "ss")=05


ttttt:标准时间,当小时数小于10时不带0,与 h:mm:ss 或 h:nn:ss 相同


如:Format("2010-5-1 9:8:5", "ttttt")=9:08:05


AM/PM:显示当前为AM或PM


如:Format("2010-5-1 11:59:59", "AM/PM")=AM


Format("2010-5-1 12:0:0",


"AM/PM")=PM


A/P:显示当前为A或P


与 AM/PM 一样,这里不再举例。


说明:


可以多种格式联合使用,如:


Format("2010-5-1 9:8:5", "dddddd aaaa")=2010年5月1日 星期六


三、文本格式


@:匹配位置插入格式化文本,如:


在"abcde"前插入文本"X",代码为:Format("abcde", "X@")=Xabcde


在"abcde"第1位字符后面插入文本"X",代码为:Format("abcde", "@X")=aXbcde


在"abcde"第2位字符后面插入文本"X",代码为:Format("abcde", "@@X")=abXcde


在"abcde"第3位字符后面插入文本"X",代码为:Format("abcde", "@@@X")=abcXde


当点位符@比原文本字符串多时,刚在相应位置上添加空格,如:


Format("abc", "X@@@@")="X abc"


Format("abc", "X@@@@@")="X abc"


Format("t",


"@@a@")=" at"(空格空格at)


与!配合可从后面截取一段文本,如:


截取"abcde"后面1个字符文本,代码为:Format("abcde", "!@")=e


截取"abcde"后面2个字符文本,代码为:Format("abcde", "!@@")=de


截取"abcde"后面3个字符文本,代码为:Format("abcde", "!@@@")=cde


截取"abcde"后面两位,并在前面添加"XY",代码为:Format("abcde", "!XY@@")=Xyde


&:字符占位符,与@基本相同,这里不再赘述。


如:Format$("I Love You", "


>:强制将所有字符以大写格式显示。


如:Format$("I Love You", ">")=I LOVE YOU


转自: VBA 格式化字符串 - 一克棉花 - 博客园


---------------------------------


Format[$] ( expr [ , fmt ] )


format 返回变体型


format$ 强制返回为文本


--------------------------------


数字类型的格式化


--------------------------------


固定格式参数:


General Number 普通数字,如可以用来去掉千位分隔号


format$("100,123.12","General Number") 返回值 100123.12


Currency 货币类型,可添加千位分隔号和货币符号


format$("100123.12","Currency") 返回值 ¥100,123.12


Fixed 格式为带两位小数的数字


format$("100123","Fixed") 返回值 100123.00


Standard 标准,即带千位分隔号和两位小数


format$("100123","Standard") 返回值 100,123.00


Percent 百分数


format$("100123","Percent") 返回值 10012300.00%


Scientific 科学记数法


format$("100123","Scientific") 返回值 1.00E+05


Yes/No 当值为0时返回 NO,否则返回 YES


format$("100123","Yes/No") 返回值 Yes


True/False 当值为0时返回 False,否则返回 True


format$("100123","True/False") 返回值 True


On/Off 当值为0时返回 Off,否则返回 On


format$("100123","Yes/No") 返回值 On


自定义格式参数


"" 不进行格式化 返回值 原值


0 占位格式化,不足补0


format$("100123","0000000") 返回值 0100123


# 占位格式化,不足时不补0


format$("100123","#######") 返回值 100123


. 强制显示小数点


format$("100123.12",".000") 返回值 100123.120


% 转化为百分数,一个%代表乘以100


format$("10.23","0.00%") 返回值 1023.00%


format$("10.23","0.00%%") 返回值 102300.00%%


, 以千为单位格化


format$("10.23",",") 返回值 0


format$("10010.23",",") 返回值 10


format$("10010.23",",0.00") 返回值 10.01


E- E+ e- e+ 显示为科学记数(要注意格式语句,否则会和E的其它含义相混)


Format$(12.5,"0.00E+00") 返回值 1.25E+01


$ 强制显示货币符号


format$("10.23","{threadcontent}.00") 返回值 ¥10.23


- + ( ) space 按位置显示本样


Format$("1234.56","-(0.00)") 返回值 -(1234.56)


\ 转义符,显示出特殊符号


Format$("1234.56","\#.00") 返回值 #1234.56


"ABC" 显示双引号 (" ") 之内的字符串。如在代码中想在 format 中包含一个字符串,必须用 Chr(34)


将文本括起来(34 为双引号 ("))


Format$(123.45,"TTT") 返回值 TTT


注:当双引号中的文本包含特殊的参数符号如e,要使用转义符"\",否则会按e的作用显示


; 类似多目运算符的作用。


当共有 四 部分时,


当大于0时,按第一部分进行格式化,


当小于0时按第二部分进行格式化,


当等于0时按第三部分进行格式化,


当为null值时,按第四部分进行格式化。如:


Format$(0,"0.00;负数;零;空") 返回值 零


当共有 三 部分时,


当大于0时,按第一部分进行格式化,


当小于0时按第二部分进行格式化,


当等于0时按第三部分进行格式化,如:


Format$(-10,"0.00;ttt;零") 返回值 ttt


当共有 两 部分时,


当大于或等于0时,按第一部分进行格式化,


当小于0时按第二部分进行格式化,


Format$(-123,"0.00;abc") 返回值 abc


Format$(123,"0.00;abc") 返回值 123.00


当共有 一 部分时,按分号左边进行格式化


---------------------------------


日期类型的格式化


---------------------------------


注意:在中文操作系统中,系统自动将月份输为如:五月,而非 May


固定格式参数


General Date 基本类型


Format(Date,"YYYY年MM月DD日")


'M 个位月只显示一位,


'MM 显示两位月,


'MMM显示英文月简称,


'MMMM显示英文全名


Format$(Now,"General Date") 返回值 2006-5-25 14:56:15


Long Date 操作系统定义的长日期


Format$(Now,"Long Date") 返回值 2006年5月25日


Medium Date 中日期(yy/mmm/dd)


Format$(Now,"Medium Date") 返回值 06-5月-25


Short Date 操作系统定义的短日期


Format$(Now,"Short Date") 返回值 2006-5-25


Long Time 操作系统定义的长时间


Format$(Now,"Long Time") 返回值 15:06:36


Medium Time 带AM/PM的12小时制,不带秒


Format$(Now,"Medium Time") 返回值 03:08 PM


Short Time 24时制的时间,不带秒


Format$(Now,"Short Time") 返回值 15:08


自定义格式参数


: 用来标识时间字符的间隔


Format$(Time(),"hh:nn") 返回值 15:25


/ 用来标识日期字符的间隔


Format$(now,"yyyy/mm/dd") 返回值 2006-05-25


c 格式化为国标的日期和时间


Format$(Now,"c") 返回值 2006-5-25 14:56:15


y 一年中的第几天


Format$(Now,"y") 返回值 145


d 一个月中的第几天(1-366)


Format$(Now,"d") 返回值 25


dd 当小于10时前面带0的天数(01-31)


Format$("2006-1-7","dd") 返回值 07


ddd 周几


Format$(Now,"ddd") 返回值 周四


dddd 星期几


Format$(Now,"dddd") 返回值 星期四


ddddd 显示标准日期


Format$(Now,"ddddd") 返回值 2006-05-25


dddddd 长日期


Format$(Now,"dddddd") 返回值 2006年5月25日


w 一个星期中的第几天


Format$(Now,"w") 返回值 5


ww 一年中的第几周


Format$(Now,"ww") 返回值 21


m 月数(注:当用于时间时,也可以表时为分钟)


Format$(Now,"m") 返回值 5


Format$(Now,"h:m") 返回值 16:11


mm 当小于10时前面带0的月数(注:当用于时间时,也可以表时为带0的分钟)


Format$(Now,"m") 返回值 05


Format$(Now,"hh:mm") 返回值 16:09


mmm 月份


Format$(Now,"mmm") 返回值 五月


q 一年中的第几季(1-4)


Format$(Now,"q") 返回值 2


yy 两位数的年份(00-99)


Format$(Now,"yy") 返回值 06


yyyy 四位数的年份(0100-9999)


Format$(Now,"yyyy") 返回值 2006


h 一天中的第N小时(0-23)


Format$(Now,"h") 返回值 16


hh 当小于10时带0的小时数(00-23)


Format$("7:30:28","hh") 返回值 07


n 一小时的分钟数(0-59)


Format$("7:30:28","n") 返回值 30


nn 当小于10时带0的分钟数(00-59)


Format$("7:3:28","n") 返回值 03


s 一分钟中的秒数(0-59)


Format$("7:30:8","s") 返回值 8


ss 当小于10时带0的分钟数(00-59)


Format$("7:3:8","ss") 返回值 08


ttttt 标准时间,小时数当小于10时不带0,与h:mm:ss相同


Format$("7:3:28","ttttt") 返回值 7:03:28


AM/PM 显示当前为AM或为PM


Format$(Now,"AM/PM") 返回值 PM


A/P 显示当前为A或为P


Format$(Now,"A/P") 返回值 P


AMPM


对0至2359的数值进行判断是AM还是PM,可以看作是同等于对00:00至23:59的数字进行判断,如1000可以看作是10:00。


Format$(1000,"AMPM") 返回值 AM


联合格式化


m/d/yy Format$(Now,"m/d/yy") 返回值 5-25-06


d-mmm-yy Format$(Now,"d-mmm-yy") 返回值 25-5月-06


d-mmmm Format$(Now,"d-mmmm") 返回值 25-五月


mmmm-yy Format$(Now,"mmmm-yy") 返回值 五月-06


hh:mm AM/PM Format$(Now,"hh:mm AM/PM") 返回值 04:50 PM


h:mm:ss a/p Format$(Now,"h:mm:ss a/p") 返回值 4:51:38 p


h:mm Format$(Now,"h:mm") 返回值 16:51


h:mm:ss Format$(Now,"h:mm:ss") 返回值 16:51:38


m/d/yy h:mm Format$(Now,"m/d/yy h:mm") 返回值 5-25-06 16:54


----------------------------------


文本类型的格式化


----------------------------------


; 当两部分时,则第一部分为非空格式化,第二部分为null值或空值的格式化表达式


@ 匹配位置插入格式化文本,占位位置不存在时,显示空白(空字符串)


只有一个@符号时,是在最后面加上格式化文本


Format$("CHIN","@a") 返回值 CHINa


有多个@占位符,是按从右至左匹配,并在相应的位置上显示格式化文本


Format$("CHIN","@a@@") 返回值 CHaIN


当与 ! 配合时,则变为从左至右匹配


Format$("CHIN","[email=!@a]!@a[/email]@@") 返回值 CaHIN


当占位符比原文本字符串多时,刚在相应位置上添加空格


Format$("C","@@a@") 返回值 空白空白aC


& 字符占位符。除在当占位位置不存在时,不显示外,其余均与@相同


当占位符比原文本字符串多时,刚在相应位置上添加空格


Format$("C","&&a&")


返回值 aC


< 强制小写。将所有字符以小写格式显示。


Format$("I love you","


> 强制大写。将所有字符以大写格式显示。


Format$("I love you",">") 返回值 I LOVE YOU


! 强制由左而右填充字符占位符。缺省值是由右而左填充字符占位符。


Format$("CHIN","[email=!@a]!@a[/email]@@") 返回值 CaHIN


----------------------------------------


强制使用中文格式的日期时间


----------------------------------------


aaaa 星期


Format$(Now,"aaaa") 返回值 星期五


O 中文月份


Format$(Now,"O") 返回值 五月


o 单字节月份


Format$(Now,"o") 返回值 5月


A 中文日期


Format$(Now,"A") 返回值 二十六日


a 单字节日期


Format$(Now,"a") 返回值 26日


E 短中文年份


Format$(Now,"E") 返回值 六年


e 单单字节年份


Format$(Now,"e") 返回值 6年


EE 中文年份


Format$(Now,"EE") 返回值 二○○六年


ee 单字节年份


Format$(Now,"ee") 返回值 2006年

————————————————

版权声明:本文为CSDN博主「weixin_39945445」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接: blog.csdn.net/weixin_39

编辑于 2023-04-13 15:11 ・IP 属地上海