版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、常用VBA函数精选By蓝桥玄霜目录前言第1例ASC函数第L2例Chi函数第1.3例Choose函数第1.4例Cos函数第L5例Date函数第1.6例DateAdd函数第L7例DateD逬函数第1.8例DatePart函数第1.9例DateSerial函数第1.10例DateMlue函数第1.11例Day函数第1.12例Dir函数第L13例Fix函数第1.14例Format函数第1.15例Hour函数第1.16例IIF函数第1.17例InputEox函数第1.18例Instr函数第1.19例InstrRev函数第1.20例IsArray函数第1.21例IsNumeric函数第1.22例Join函
2、数第1.23例LBound和UBound函数第1.24例LCase和UCase函数第L25例Left和Right函数第L26例Len函数第1.27例LTiim、RTmn与Trim函数第L28例Mid函数第1.29例Month和MonthName函数第1.30例MsgBox函数第1.31例Now函数第1.32例RGB函数第1.33例Rnd函数第1.34例Round函数第1.35例Split函数第1.36例Sqr函数第1.37例StT和CStr函数第1.38例lime函数第1.39例TimeSerial和TimeQlue函数第1.40例Timer函数刖弓我们平时在工作表单元格的公式中常常使用函数,
3、Excel自带的常用的函数多达300多个,功能强人,丰富多彩,但是在VBA中不能直接应用,必须在函数名前面加上对象,比如:Application/WzdrksheetFiinction.Sum(argl,arg2,arg3)。而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供犬家学习参考。第1.1例ASC函数一、题目:要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCH值。二、代码:Sub示例_01()DunmyNuml%,myNum2%myNuml=Asc(HExceln),返回69myNuin2=Asc(Hen)返回101al=my
4、Numl=Tbl=myNumla2=MmyNum2=H:b2=myNuni2EndSub三、代码详解1、Sub示例_01():宏程序的开始语句。2、DunmyNuml%,myNuni2%:变量myNuml和myNuni2声明为整型变量。也可以写为DimmyNumlAsIntegeroInteger变量存储为16位(2个字节)的数值形式,其范围为-32,768到32,767之间。Integer的类型声明字符是百分比符号()。3、myNuml=Asc(”Excel”):把Asc函数的值赋给变量myNuml。Asc函数返回一个Integer,代表字符串中首字母的字符的ASCD代码。语法Asc(sti
5、ing)必要的stimg(字符串)参数可以是任何有效的字符串表达式。如果stung中没有包含任何字符,则会产生运行时错误。4、myNum2=Asc(e):把Asc函数的值赋给变量myNum2。这里返回小写字母e的ASCII代码101。5、al=HmyNuml=bl=myNuml:把字符串“myNuml=赋给Al单元格,把变量myNuml的值赋给Bl单元格。6、a2=HmyNum2=H:b2=myNuin2:把字符串umyNum2=赋给A2单元格,把变量myNum2的值赋给B2单元格。7、EndSub:程序的结束语句,和“Sub示例_1_01()”相对应。第1.2例Chr函数一、题目”:要求编写
6、一段代码,运用ch-函数将asch值转换为对应的字符。二、代码:Sub示例_02()DimmyCliar1$,myChar2SmyCharl=Clir(69),返回E。myChar2=Clir(lOl)返回e。al=myCharl=:bl=myCharla2=myChar2=:b2=myChar2EndSub三、代码详解1、Sub示例_02():宏程序的开始语句。2、DimmyChar1S,myChar2$:变量myChar1和myCliar?声明为字符串变量。也可以写为DimmyCharlAsStimg。String之字符码的范闱是0到255。字符集的前128个字符(0到127)对应于标准的
7、U.S.键盘上的字符与符号。这前128个字符与ASCII字符集中所定义的相同。后128个字符(128到255)则代表特殊字符,例如国际字符,重音符号,货币符号及分数。Strmg的类型声明字符为美元号($)。3、myCharl=C1m(69):把Chi(69)的值赋给变量myCharl。这里返回人写字母E。Chr函数根据字符代码返回一个字符。语法Chi-(charcode)必要的cliarcode(字符代码)参数是用来识别某字符的。4、myChar?=C1m(101):把Chr函数的值赋给变量myChar2。这里返回小写字母e。5、al=myChar1=bl=myCharl:把字符串“myCha
8、r1=“赋给Al单元格,把变量myCharl的值赋给Bl单元格。6、a2=myChar2=:b2=myChar2:把字符串“myChar2=“赋给A2单元格,把变量myChar2的值赋给B2单元格。7、EndSub:程序的结束语句,和“Sub示例_02()”相对应。第1.3例Choose函数一、题目:要求编写一段代码,运用Choose函数根据指定数字选择对应的字符串。二、代码:Sub示例_03()DimNum%Num=2MsgBoxChoose(Nuni”一月役”二月”三月”)EndSub三、代码详解1、Sub示例103():宏程序的开始语句。宏名为示例103。2、DunNum%:变量Num声
9、明为整型变量。3、Nuuf2:把2赋给变量Num。4、MsgBoxChoose(Num,H一月”,”二月”,”三月”):Choose函数从参数列表中选择并返回一个值。语法Choose(mdex,choice-1,choice-2,.,choice-n)Choose会根据mdex的值来返回选择项列表中的某个值。如果mdex是1,则Choose会返回列表中的第1个选择项。如果index是2,则会返回列表中的第2个选择项,以此类推。Index是必要参数,数值表达式或字段,它的运算结果是一个数值,且界于1和可选择的项目数之间。当index小于1或人于列出的选择项数目时,Choose函数返回Null。如
10、果index不是整数,则会先四舍五入为与其最接近的整数。第1.4例Cos函数一、题目:要求编写一段代码,运用Cos函数根据指定角度的余弦计算其正割的值。二、代码:Sub示例_04()Dimjiaodu,zengejiaodu=1.3zenge=1/CosQiaodu)MsgBox“角度为”&jiaodu&“的正割的值=”&zengeEndSub三、代码详解1、Sub示例_04():宏程序的开始语句。宏名为示例_04。2、Dimjiaodu,zenge:两个变量都被指定为可变型数据奨型。当声明常数、变量或参数时,若无指定数据类型则会自动的指定成Variant(可变型)数据类型。声明成Aanant
11、数据类型的变量可以为字符串、口期、时间、Boolean或数值。3、jiaodu=1.3:把以“弧度”为单位的角度1.3赋给变量jiaodiu4、zenge=1/Cos(jiaodu):利用1/余弦算得正割(sec()的值,赋给变量zenge。Cos函数返回一个角的余弦值。其参数是表示一个以弧度为单位的角。5、MsgBox角度为”&jiaodn&“的正割的值=”&zenge:利用MsgBox函数显示算得的正割(sec()的值。第1.5例Date函数一、题目:要求编写一段代码,运用Date函数显示系统口期的值。二、代码:Sub示例_05()DimmyDatemyDate=DateMsgBox“系统
12、口期为”&myDateEndSub三、代码详解1、Sub示例105():宏程序的开始语句。宏名为示例105。2、DunmyDate:变量myDate被指定为可变型数据类型。3、myDate=Date:把系统口期的值赋给变量myDate。Date函数返回系统当前的口期。4、MsgBox“系统口期为”&myDate:利用MsgBox函数显示系统口期的值。第1.6例DateAdd函数一、题目:要求编写一段代码,运用DateAdd函数显示返回一定间隔后的口期。二、代码:Sub示例_1_06()DimdyrqAsDateDimjglxAsStringDimnAsIntegerDimMsgjglx=dyr
13、q=InputBox(H请输入一个口期”)n=IiiputBox(输入增加月的数目:)Msg=”新口期:”&DateAdd(jglx,n,dyrq)MsgBoxMsgEndSub三、代码详解1、Sub示例106():宏程序的开始语句。宏名为示例106。2、DrmdyrqAsDate:变量dyrq声明为口期对象型数据类型。其余几个变量分别是字符串型、整型和可变型变量。3、jglx=m-:用字符in来指定以“月份”作为间隔。4、dyi-q=InputBox(请输入一个口期”):用IiiputBox函数来让用户输入一个口期,并把用户输入的口期赋给变量dyrq。5、n=InputBox(输入增加月的数
14、目:”):用InputBox函数来让用户输入间隔月的数目,并把用户输入的值赋给变量11。6、Msg=噺口期:&DateAdd(jglx,n,dyi*q):用DateAdd函数计算得到的新的口期和字符串“新口期:”连接起来赋给变量Msg。DateAdd函数返回一个日期,这一口期加上了一个时间间隔。语法DateAdd(mterval,number,date)DateAdd函数语法中有下列命名参数:interval必要。字符串表达式,是所要加上去的时间间隔。它具有好多设定值,比如”m”为月;”d”为日;”yyyy”为年等等。number必要。数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得
15、到未来的口期),也可以为负数(得到过去的口期)。date必要。表示日期的文字。7、MsgBoxMsg:利用MsgBox函数显示Msg的值。第1.7例DateDffif函数一、题目:要求编写一段代码,运用DateDiff函数返回某个指定口期距离今天的天数。二、代码:Sub示例_07()DimzdiqAsDateDimMsgzdiq=InputBox(n请输入一个口期:n)Msg=”离开今天的天数:n&DateDiff(,d,Now,zdiq)MsgBoxMsgEndSub三、代码详解1、Sub示例1070:宏程序的开始语句。宏名为示例107。2、DiinzdiqAsDate:变量zdrq声明为口
16、期对彖型数据类型。3、zdiq=InputBox(请输入一个期):用InputBox函数来让用户输入一个口期,并把用户输入的口期赋给变量zdiqo4Msg=离开今天的天数:&DateDifi(d,Now,zdiq):用DateDiff函数计算得到的结果和字符串“离开今天的天数:”连接起来赋给变量Msg。5、MsgBoxMsg:利用MsgBox函数显示Msg的值。DateDiff函数可用来决定两个口期之间所指定的时间间隔数目。例如,可以使用DateDiff来计算两个口期之间相隔几日,或计算从今天起到年底还有多少个星期。DateDi任(interval,datel,date2,fii-stdayo
17、fveek,firshveekofyear)DateDiff函数语法中有下列命名参数:interval必要。字符串表达式,是所要加上去的时间间隔。它具有好多设定值,与DateAdd函数相同;此例中的啊”,表示天数;Datel,date2必要;计算中要用到的两个口期。Fu-stdayofxveek可选。指定一个星期的第一天的常数。如果未予指定,则以星期口为第一天。五rstweekofyear可选。指定一年的第一周的常数。如果未予指定,则以包含1月1口的星期为第一周。第1.8例DatePart函数一、题目:要求编写一段代码,运用DatePait函数返回某个指定口期是在一年的哪一个季度。二、代码:S
18、ub示例_08()DimzdiqAsDateDimMsgzdiq=InputBox(n请输入一个口期川)Msg=”季度:n&DatePartCq:zdiq)MsgBoxMsgEndSub三、代码详解1、Sub示例1080:宏程序的开始语句。宏名为示例108。2、DunzdiqAsDate:变量zdrq声明为口期对彖型数据类型。3、zdiq=InputBox(请输入一个期):用InputBox函数来让用户输入一个口期,并把用户输入的口期赋给变量zdiqo4、Msg=”季度:”&DatePartCq,zdrq):用DatePait函数计算得到的结呆和字符串“季度:”连接起来赋给变量Msg。5、Ms
19、gBoxMsg:利用MsgBox函数显示Msg的值。DatePart函数DatePart(interval,date,firstdayofveek,fiistxveekofyear)语法中有下列命名参数:interval必要。字符串表达式,是所要加上去的时间间隔。它具有好多设定值,与DateAdd函数相同;此例中的“q”,表示季度;Date,必要;计算中要用到的两个口期。Fu-stdayofveek可选。指定一个星期的第一天的常数。如果未予指定,则以星期口为第一天。五rstweekofyear可选。指定一年的第一周的常数。如果未予指定,则以包含1月1口的星期为第一周。第1.9例DateSeri
20、a1函数一、题目:要求编写一段代码,运用DateSenal函数返回指定口期的Date类型。二、代码:Sub示例_09()Dimzdiqzdiq=DateSerial(2008,8,8)MsgBoxzdi-qEndSub三、代码详解1、Sub示例1090:宏程序的开始语句。宏名为示例109。2、Dunzdi-q:变量zdrq声明为可变型数据类型。3、zdiq=DateSerial(200S,&8):DateSerial函数转换所得的结果赋给变量zdrq。DateSenal函数返回指定口期年月口的口期格式。语法DateSerial(year,month,day)DateSenal函数语法有下列的命
21、名参数:year必要;整型。从100到9999间的整数,或一数值表达式。month必要;整型。任何数值表达式。day必要;整型。任何数值表达式。4、MsgBoxzdrq:利用MsgBox函数显示zdrq的值。第110例DateVahe函数一、题目:要求编写一段代码,运用DateMlue函数返回指定口期的Date类型。二、代码:Sub示例_010()Dimzdiqzdiq=DateQlueCAugust8,2008”)MsgBoxzdrqEndSub三、代码详解1、Sub示例_0100:宏程序的开始语句。宏名为示例_010o2、Dimzdrq:变量zdrq声明为可变型数据类型。3、zdrq=Da
22、tealue(nAugiist8,2008”):DateSenal函数转换所得的结果赋给变量zdrq。4、MsgBoxzdrq:利用MsgBox函数显示zdrq的值。DateAalue函数将字符串转换为口期格式。语法DateAalue(date)DateAalue函数的参数:date必要:通常是字符串表达式,表示从100年1月1口到9999年12月31口之间的一个口期。但是,date也可以是任何表达式,其所代表的口期、时间在上述范围内。第1.11例Day函数一、题目:要求编写一段代码,运用Day函数返回指定口期的口。二、代码:Sub示例1()Dimzdiqzdiq=#2008-12-8#Msg
23、Boxzdiq&”这天的口为:”&Day(zdiq)EndSub三、代码详解1、Sub示例1():宏程序的开始语句。宏名为示例1。2、Dimzdrq:变量zdrq声明为可变型数据类型。3、zdrq=#2008-8-8#:把日期2008-8-8赋给变量zdrq。4、MsgBoxzdrq&“这天的口为:”&Day(zdrq):利用MsgEox函数显示Day(zdrq)的值。Day函数返回一个其值为1到31之间的整数,表示一个月中的某一口。语法Day(date)Day函数的参数:date必要的,可以是任何能够表示口期的Vanant、数值表达式、字符串表达式或它们的组合。第1.12例Dir函数一、题目
24、:要求编写一段代码,运用Dir函数返回一个文件夹的文件列表。二、代码:Sub示例2()Dimwjmwjm=Dir(nC:WINDOWSWIN.uiin)MsgBoxyjmwjm=DirCCWINDOWS*.mrj=DiiEndSub三、代码详解1、Sub示例1120:宏程序的开始语句。宏名为示例112。2、Dunwjm:变量yjm声明为可变型数据类型。3、wjm=Dir(”C:WINDOWSWIN.mi”):如果该文件存在则返回“WIN.INI”(在C:Wmdows文件夹中),把返回的文件名赋给变量wjmo如果该文件不存在则4、wjm=Dir(”C:WINDOWS*.inT):返回带指定扩展名
25、的文件名。如果超过一个*ini文件存在,函数将返回按条件第一个找到的文件名。5、wjm=Dir:若第二次调用Dir函数,但不带任何参数,则函数将返回同一目录下的下一个*im文件。Du函数返回一个字符串Strmg,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。Dir(pathname,attributes)Dir函数的语法具有以下几个部分:patlmame可选参数。用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到patlmame,则会返回零长度字符串(”)。attributes可选参数。常数或数值表达式,其总和用来指定文件属性
26、。如果省略,则会返回匹配patlmame但不包含属性的文件。第1.13例Fix函数一、题目:要求编写一段代码,运用Fix函数返回某数值的整数部分。二、代码:Sub示例3()MsgBox“99.8的整数部分是:”&Fix(99.8)MsgBox“一99.8的整数部分是:”&Fix(-99.8)EndSub三、代码详解1、Sub示例1130:宏程序的开始语句。宏名为示例113。2、MsgBox“99.8的整数部分是:”&Fix(99.8):利用MsgBox函数显示Fix(99.8)的值。3、MsgBox“-99.8的整数部分是:”&Fix(-99.8):利用MsgBox函数显示Fix(-99.8)
27、的值。Fix函数返回参数的整数部分。语法Fix(number)number必要的是任何有效的数值表达式。Int及Fix函数在返回某数值的整数部分时有何不同。当参数为负数时,lilt函数返回小于或等于该参数之最大整数,而Fix函数则返回人于或等于该参数之最小整数。第1.14例Format函数一、题目:要求编写一段代码,运用Fonmt函数对指定字符串返回指定格式的输出。二、代码:Sub示例4()Dimsj,rqsj=1000,H大役“小”)MsgBoxdx&”比1000要”&Cheshi&HM&Abs(1000-dx)EndSub三、代码详解1、Sub示例1160:宏程序的开始语句。宏名为示例11
28、6。2、DimChesluAsString,dxAsInteger:变量Cheshi声明为字符串数据类型,dx声明为整型。3、dx=560:把数字560赋给变量dx。4、Cheshi=HF(dx1000,吠字,小”):根据变量dx是否大于1000的条件来判断,并且把返回的结果赋给变量Cheslu05、MsgBoxdx&“比1000要&ChesluAbs(1000-dx):利用NIsgBox函数显示最后的值。其中Abs函数是取表达式的绝对值函数。HF函数根据表达式的值,来返回两部分中的其中一个。IIF(expr,tmepart,falsepait)UF函数的语法含有下面这些命名参数:expi-必
29、要参数。用来判断真伪的表达式。tiuepart必要参数。如果expr为True,则返回这部分的值或表达式。falsepart必要参数。如果expr为False,则返回这部分的值或表达式。第1.17例InputBox函数一、题目:要求编写一段代码,运用IiiputBox函数,用户输入一定范闱的数值并返回结果。二、代码:SubSub示例_1_170DimMsg$,bt$,Defaults,MyVhlue,aaMsg=”输入一个10到25之间的数值:bt=“InputBox函数示例”Default=,10设置缺省值。100:MyAalue=InputBox(Msg,bt?Default)IfMyAa
30、luev106Myalue25Tlienaa=MsgBox(*输入数值超出范围,请重新输入或者退出,1)IfaaovbOKThenExitSubGoTo100ElseMsgBoxn你输入的是”&MyXalueEndIfEndSub三、代码详解1、Sub示例1170:宏程序的开始语句。宏名为示例117。2、DunMsgS,btS,Default,My,alue,aa:变量Msg、Default和bt声明为字符串数据类型,其它的没有显式声明,都为可变型数据类型。3、Msg=输入一个10到25之间的数值:“:设置提示信息,把字符串赋给变量Msg。4、bt=InputBox函数示例”:设置标题,把字符
31、串赋给变量bt5、Default=*10:设置缺省值,把字符串赋给变量Defaulto6MyValue=InputBox(Msg,bt,Default):通过IiiputBox函数显示信息、标题及缺省值,把函数返回值赋给变量My乜lue。7、IfMyAalue25Then:如果IiiputBox函数返回的数值小于10或者人于25,那么执行下面的语句。8、aa=MsgBox(输入数值超出范I制,请重新输入或者退出。”,1):如果IiiputBox函数返回的数值超出了范围,显示一个消息框,消息框里面的第2个参数是1,表示消息框上有两个按钮:“确定”和“取消”按钮。并把消息框返回的结果赋给变量aa。
32、9、IfaaOx-bOKThenExitSub:如果用户按了消息框上的“取消”按钮,就退出本程序。10、GoTo100:如果用户按了消息框上的“确定”按钮,就转而从行号100开始执行代码。11、MsgBox”你输入的是”&MyValue:如果用户输入了符合要求的数值,按了回车键或者“确定”按钮,消息框显示用户输入的值。IiiputBox函数在一对话框来中显示提示,等待用户输入正文或按下按钮,并返回包含文本框内容的字符串。语法IiiputBox(prompt,title,default,xpos,ypos,helpfile,context)IiiputBox函数的语法具有以下几个命名参数:Pro
33、mpt必需的。作为对话框消息出现的字符串表达式。Prompt的最人长度大约是1024个字符,由所用字符的宽度决定。如果Prompt包含多个行,则可在各行之间用回车符(ChrU3)、换行符(Chr(10)或回车换行符的组合(Chr(13)&Chr(10)来分隔。Title可选的。显示对话框标题栏中的字符串表达式。如果省略Title,则把应用程序名放入标题栏中。Default可选的。显示文本框中的字符串表达式,在没有其它输入时作为缺省值。如果省略Default,则文本框为空。其它参数省略,请参见Excel帮助文件。第1.18例Instr函数一、题目:要求编写一段代码,运用Instr函数,在一字符串
34、中查找另一字符串并返回结果。二、代码:Sub示例8()DimbssStnng,yczChai;wzbssStrmg=nABpAApCDPBBPHyczCliar=HPnMsgBox“bssStrmg=,H,ABpAApCDPBBP,n&Chi(10)&_nyczChar=P时:”&Chi(10)&Chi(10)&_”InStr(4,bssString,yczChar,1)返回值为_IiiSti(4,bssStiing,yczChai;1)wz=Instr(l,bssStiing,yczChar,0)wz=Instr(bssStringyczChar),返回9。wz=Instr(l,bssStr
35、mgW”),返回0。EndSub三、代码详解1、Sub示例118():宏程序的开始语句。宏名为示例118。2、DimbssStrmg,yczCliai;wz:变量bssStiing、yczChar和ws声明为可变型变量。3、bssStrmg=HABpAApCDXPBBPn:把被搜索的字符串赋给变量bssStnng。4、yczChar=P:把要查找的字符P赋给变量yczChar。5、MsgBoxnbssStimg=ABpAApCDPBBP,HM,&Chr(10)&_HyczChar=P时:”&Chr(lO)&Chr(lO)&_”InStr(4,bssString,yczChar,1)返回值为&_InStr(4,bssStrmg,yczChar,1):用消息框显奈从第四个字符开始,以文本比较的方式找字符P,返回值为6(小写p的位置)。小写p和人写P在文本比较下是一样的,也就是当函数的最后一个参数为1时,查找不分人小写。把要查找的字符P的位置赋给变量yczChaio式中Clir(10)是换行符。6、wz=Instr(l,bssS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《皮肤性病学湿疹》课件
- 行政后勤财务报销审核
- 母亲节 营销新视角
- 体育行业话务员工作总结
- 函授专科毕业自我鉴定15篇
- 通宣理肺丸的现代化改造-洞察分析
- 血型抗原抗体相互作用机制-洞察分析
- 现场增强现实辅助训练-洞察分析
- 先进材料对制造业竞争优势提升-洞察分析
- 音视频内容分发网络优化-洞察分析
- 诗朗诵搞笑版台词
- 养老服务中心装饰装修工程施工方案
- 落地式脚手架监理实施细则
- 上海市金山区2022-2023学年中考一模英语试题含答案
- 节水灌溉供水工程初步设计报告
- 【期末试题】河西区2018-2019学年度第一学期六年级数学期末试题
- 2022年总经理年会发言稿致辞二
- 警综平台运行管理制度
- 立法学完整版教学课件全套ppt教程
- 简约中国风水墨山水工作总结通用PPT模板
- 矿山测量课程设计
评论
0/150
提交评论