EXCELVBA函数参考手册.docx
《EXCELVBA函数参考手册.docx》由会员分享,可在线阅读,更多相关《EXCELVBA函数参考手册.docx(162页珍藏版)》请在冰豆网上搜索。
EXCELVBA函数参考手册
ExcelVBA学习资料
函
数
参
考
手
册
摘自Excel2003VBA帮助
2006年12月29日
Abs函数
返回参数的绝对值,其类型和参数相同。
语法
Abs(number)
必要的number参数是任何有效的数值表达式,如果number包含Null,则返回Null,如果number是未初始化的变量,则返回0。
说明
一个数的绝对值是将正负号去掉以后的值。
例如,ABS(-1)和ABS
(1)都返回1。
Abs函数示例
本示例使用Abs函数计算数的绝对值。
DimMyNumber
MyNumber=Abs(50.3)'返回50.3。
MyNumber=Abs(-50.3)'返回50.3。
请参阅:
Sgn函数、数学函数中的Abs函数、Atn函数、Cos函数、Exp函数、Fix函数、Int函数、Log函数、Rnd函数、Sgn函数、Sin函数、Sqr函数、Tan函数、导出的数学函数:
导出的数学函数
以下为非基本数学函数的列表,皆可由基本数学函数导出:
函数
由基本函数导出之公式
Secant(正割)
Sec(X)=1/Cos(X)
Cosecant(余割)
Cosec(X)=1/Sin(X)
Cotangent(余切)
Cotan(X)=1/Tan(X)
InverseSine(反正弦)
Arcsin(X)=Atn(X/Sqr(-X*X+1))
InverseCosine(反余弦)
Arccos(X)=Atn(-X/Sqr(-X*X+1))+2*Atn
(1)
InverseSecant(反正割)
Arcsec(X)=Atn(X/Sqr(X*X-1))+Sgn((X)-1)*(2*Atn
(1))
InverseCosecant(反余割)
Arccosec(X)=Atn(X/Sqr(X*X-1))+(Sgn(X)-1)*(2*Atn
(1))
InverseCotangent(反余切)
Arccotan(X)=Atn(X)+2*Atn
(1)
HyperbolicSine(双曲正弦)
HSin(X)=(Exp(X)-Exp(-X))/2
HyperbolicCosine(双曲余弦)
HCos(X)=(Exp(X)+Exp(-X))/2
HyperbolicTangent(双曲正切)
HTan(X)=(Exp(X)-Exp(-X))/(Exp(X)+Exp(-X))
HyperbolicSecant(双曲正割)
HSec(X)=2/(Exp(X)+Exp(-X))
HyperbolicCosecant(双曲余割)
HCosec(X)=2/(Exp(X)-Exp(-X))
HyperbolicCotangent(双曲余切)
HCotan(X)=(Exp(X)+Exp(-X))/(Exp(X)-Exp(-X))
InverseHyperbolicSine(反双曲正弦)
HArcsin(X)=Log(X+Sqr(X*X+1))
InverseHyperbolicCosine(反双曲余弦)
HArccos(X)=Log(X+Sqr(X*X-1))
InverseHyperbolicTangent(反双曲正切)
HArctan(X)=Log((1+X)/(1-X))/2
InverseHyperbolicSecant(反双曲正割)
HArcsec(X)=Log((Sqr(-X*X+1)+1)/X)
InverseHyperbolicCosecant
HArccosec(X)=Log((Sgn(X)*Sqr(X*X+1)+1)/X)
InverseHyperbolicCotangent(反双曲余切)
HArccotan(X)=Log((X+1)/(X-1))/2
以N为底的对数
LogN(X)=Log(X)/Log(N)
Array函数
返回一个包含数组的Variant。
语法
Array(arglist)
所需的arglist参数是一个用逗号隔开的值表,这些值用于给Variant所包含的数组的各元素赋值。
如果不提供参数,则创建一个长度为0的数组。
说明
用来表示数组元素的符号由变量名、圆括号以及括号中的所需元素的索引号组成。
在下面的示例中,第一条语句创建一个Variant的变量A。
第二条语句将一个数组赋给变量A。
最后一条语句将该数组的第二个元素的值赋给另一个变量。
DimAAsVariant
A=Array(10,20,30)
B=A
(2)
使用Array函数创建的数组的下界受OptionBase语句指定的下界的决定,除非Array是由类型库(例如VBA.Array)名称限定。
如果是由类型库名称限定,则Array不受OptionBase的影响。
注意没有作为数组声明的Variant也可以表示数组。
除了长度固定的字符串以及用户定义类型之外,Variant变量可以表示任何类型的数组。
尽管一个包含数组的Variant和一个元素为Variant类型的数组在概念上有所不同,但对数组元素的访问方式是相同的。
Array函数示例
该示例使用Array函数来返回一个包含Variant的数组。
DimMyWeek,MyDay
MyWeek=Array("Mon","Tue","Wed","Thu","Fri","Sat","Sun")
'返回值假设下界的设置为1(使用OptionBase
'语句)。
MyDay=MyWeek
(2)'MyDay的值为"Tue"。
MyDay=MyWeek(4)'MyDay的值为"Thu"。
Asc函数
返回一个Integer,代表字符串中首字母的字符代码。
语法
Asc(string)
必要的string参数可以是任何有效的字符串表达式。
如果string中没有包含任何字符,则会产生运行时错误。
说明
在非DBCS系统下,返回值范围为0–255。
在DBCS系统下,则为-32768–32767。
注意AscB函数作用于包含在字符串中的字节数据,AscB返回第一个字节的字符代码,而非字符的字符代码。
AscW函数返回Unicode字符代码,若平台不支持Unicode,则与Asc函数功能相同。
Asc函数示例
本示例使用Asc函数返回字符串首字母的字符值(ASCII值)。
DimMyNumber
MyNumber=Asc("A")'返回65。
MyNumber=Asc("a")'返回97。
MyNumber=Asc("Apple")'返回65。
Atn函数
返回一个Double,指定一个数的反正切值。
语法
Atn(number)
必要的number参数是一个Double或任何有效的数值表达式。
说明
Atn函数的参数值(number)为直角三角形两边的比值并返回以弧度为单位的角。
这个比值是角的对边长度除以角的邻边长度之商。
值的范围在-pi/2和pi/2弧度之间。
为了将角度转换为弧度,请将角度乘以pi/180。
为了将弧度转换为角度,请将弧度乘以180/pi。
注意Atn是Tan的反三角函数,Tan的参数值为角度,返回直角三角形的两条边的比值。
不要将Atn和余切函数混淆,余切函数值是正切函数值的倒数,cotangent=(1/tangent)。
Atn函数示例
本示例使用Atn函数计算圆周率。
Dimpi
pi=4*Atn
(1)'计算圆周率。
CallByName函数
执行一个对象的方法,或者设置或返回一个对象的属性。
语法
CallByName(object,procname,calltype,[args()])
CallByName函数的语法有以下命名参数:
部分
描述
object
必需的;变体型(对象)。
函数将要执行的对象的名称。
procname
必需的;变体型(字符串)。
一个包含该对象的属性名称或者方法名称的字符串表达式。
calltype
必需的;常数。
一个vbCallType类型的常数,代表正在被调用的过程的类型。
args()
可选的:
变体型(数组)。
说明
CallByName函数用于获取或者设置一个属性,或者在运行时使用一个字符串名称来调用一个方法。
在下面的例子中,第一行使用CallByName来设置一个文本框的MousePointer属性,第二行得到MousePointer属性的值,第三行调用Move方法来移动文本框:
CallByNameText1,"MousePointer",vbLet,vbCrosshair
Result=CallByName(Text1,"MousePointer",vbGet)
CallByNameText1,"Move",vbMethod,100,100
CBool等类型转换函数
每个函数都可以强制将一个表达式转换成某种特定数据类型。
语法
CBool(expression)CByte(expression)CCur(expression)CDate(expression)
CDbl(expression)CDec(expression)CInt(expression)CLng(expression)
CSng(expression)CStr(expression)CVar(expression)
必要的expression参数可以是任何字符串表达式或数值表达式。
返回类型
函数名称决定返回类型,如下所示:
函数
返回类型
expression参数范围
CBool
Boolean
任何有效的字符串或数值表达式。
CByte
Byte
0至255。
CCur
Currency
-922,337,203,685,477.5808至922,337,203,685,477.5807。
CDate
Date
任何有效的日期表达式。
CDbl
Double
负数从-1.79769313486231E308至-4.94065645841247E-324;正数从4.94065645841247E-324至1.79769313486232E308。
CDec
Decimal
零变比数值,即无小数位数值,为
+/-79,228,162,514,264,337,593,543,950,335。
对于28位小数的数值,范围则为
+/-7.9228162514264337593543950335;最小的可能非零值是0.0000000000000000000000000001。
CInt
Integer
-32,768至32,767,小数部分四舍五入。
CLng
Long
-2,147,483,648至2,147,483,647,小数部分四舍五入。
CSng
Single
负数为-3.402823E38至-1.401298E-45;正数为1.401298E-45至3.402823E38。
CStr
String
依据expression参数返回Cstr。
CVar
Variant
若为数值,则范围与Double相同;若不为数值,则范围与String相同。
说明
如果传递给函数的expression超过转换目标数据类型的范围,将发生错误。
通常,在编码时可以使用数据类型转换函数,来体现某些操作的结果应该表示为特定的数据类型,而不是缺省的数据类型。
例如,当单精度、双精度或整数运算发生的情况下,使用CCur来强制执行货币运算。
应该使用数据类型转换函数来代替Val,以使国际版的数据转换可以从一种数据类型转换为另一种。
例如,当使用Ccur时,不同的小数点分隔符、千分位分隔符和各种货币选项,依据系统的区域设置都会被妥善识别。
当小数部分恰好为0.5时,Cint和CLng函数会将它转换为最接近的偶数值。
例如,0.5转换为0、1.5转换为2。
Cint和CLng函数不同于Fix和Int函数,Fix和Int函数会将小数部分截断而不是四舍五入。
并且Fix和Int函数总是返回与传入的数据类型相同的值。
使用IsDate函数,可判断date是否可以被转换为日期或时间。
Cdate可用来识别日期文字和时间文字,以及落入可接受的日期范围内的数值。
当转换一个数字成为日期时,是将整数部分转换为日期,小数部分转换为从午夜起算的时间。
CDate依据系统上的区域设置来决定日期的格式。
如果提供的格式为不可识别的日期设置,则不能正确判断年、月、日的顺序。
另外,长日期格式,若包含有星期的字符串,也不能被识别。
CVDate函数也提供对早期VisualBasic版本的兼容性。
CVDate函数的语法与CDate函数是完全相同的,不过,CVDate是返回一个Variant,它的子类型是Date,而不是实际的Date类型。
因为现在已有真正的Date类型,所以CVDate也不再需要了。
转换一个表达式成为Date,再赋值给一个Variant,也可以达到同样的效果。
也可以使用这种技巧将其他真正的数据类型转换为对等的Variant子类型。
注意CDec函数不能返回独立的数据类型,而总是返回一个Variant,它的值已经被转换为Decimal子类型。
CBool函数示例
本示例使用CBool函数来将一表达式转成Boolean值。
如果表达式的结果为非零的值,CBool返回True;否则返回False。
DimA,B,Check
A=5:
B=5'设置变量初值。
Check=CBool(A=B)'Check的值为True。
A=0'定义变量。
Check=CBool(A)'Check的值为False。
CByte函数示例
本示例使用CByte函数将一表达式转成Byte。
DimMyDouble,MyByte
MyDouble=125.5678'MyDouble为Double(双精度)。
MyByte=CByte(MyDouble)'MyByte值为126。
CCur函数示例
本示例使用CCur函数将表达式转成Currency。
DimMyDouble,MyCurr
MyDouble=543.214588'MyDouble为Double类型。
MyCurr=CCur(MyDouble*2)'将MyDouble*2的结果
'(1086.429176)转换为Currency(1086.4292)。
CDate函数示例
本示例使用CDate函数将字符串转换成Date。
一般说来,字符串格式的日期与时间硬编码(如示例中所示)并不好。
较好的做法是使用日期原义表达式和时间的原义表达式(如#2/12/1969#,#4:
45:
23PM#)。
DimMyDate,MyShortDate,MyTime,MyShortTime
MyDate="February12,1969"'定义日期。
MyShortDate=CDate(MyDate)'转换为Date数据类型。
MyTime="4:
35:
47PM"'定义时间。
MyShortTime=CDate(MyTime)'转换为Date数据类型。
CDbl函数示例
本示例使用CDbl函数将表达式转换为Double类型。
DimMyCurr,MyDouble
MyCurr=CCur(234.456784)'MyCurr为Currency类型。
MyDouble=CDbl(MyCurr*8.2*0.01)'将结果转换为Double类型。
CDec函数示例
该示例使用CDec函数将数字值转换为Decimal。
DimMyDecimal,MyCurr
MyCurr=10000000.0587'MyCurr是货币。
MyDecimal=CDec(MyCurr)'MyDecimal是二进制数。
CInt函数示例
本示例使用CInt函数将一数值转换为Integer。
DimMyDouble,MyInt
MyDouble=2345.5678'MyDouble为Double类型。
MyInt=CInt(MyDouble)'MyInt的值为2346。
CLng函数示例
本示例使用CLng函数将一数值转换为Long。
DimMyVal1,MyVal2,MyLong1,MyLong2
MyVal1=25427.45:
MyVal2=25427.55'MyVal1、MyVal2均为Double类型。
MyLong1=CLng(MyVal1)'MyLong1的值为25427。
MyLong2=CLng(MyVal2)'MyLong2的值为25428。
CSng函数示例
本示例使用CSng函数将一数值转换为Single。
DimMyDouble1,MyDouble2,MySingle1,MySingle2
'MyDouble1、MyDouble2均为Double类型。
MyDouble1=75.3421115:
MyDouble2=75.3421555
MySingle1=CSng(MyDouble1)'MySingle1的值为75.34211。
MySingle2=CSng(MyDouble2)'MySingle2的值为75.34216。
CStr函数示例
本示例使用CStr函数将一数值转换为String。
DimMyDouble,MyString
MyDouble=437.324'MyDouble为Double类型。
MyString=CStr(MyDouble)'MyString的内容为“437.324”。
CVar函数示例
本示例使用CVar函数将表达式转换为Variant。
DimMyInt,MyVar
MyInt=4534'MyInt为Integer类型。
MyVar=CVar(MyInt&"000")'MyVar的内容为字符串“4534000”。
Choose函数
从参数列表中选择并返回一个值。
语法
Choose(index,choice-1[,choice-2,...[,choice-n]])
Choose函数的语法具有以下几个部分:
部分
描述
index
必要参数,数值表达式或字段,它的运算结果是一个数值,且界于1和可选择的项目数之间。
choice
必要参数,Variant表达式,包含可选择项目的其中之一。
说明
Choose会根据index的值来返回选择项列表中的某个值。
如果index是1,则Choose会返回列表中的第1个选择项。
如果index是2,则会返回列表中的第2个选择项,以此类推。
可以使用Choose来查阅一个列表中的项目。
例如,如果index所指定的值为3,而choice-1="one"、choice-2="two"、且choice-3="three",那么Choose将返回"three"。
当index代表一选项组中的值时,则这项功能将会特别有用。
即使它只返回一个选项值,Choose仍然会计算列表中的每个选择项。
所以应该注意到这项副作用。
例如,当在每个选择项表达式中使用了MsgBox函数作为其中的一部分时,每计算一个选择项,就会显示一次消息框。
当index小于1或大于列出的选择项数目时,Choose函数返回Null。
如果index不是整数,则会先四舍五入为与其最接近的整数。
Choose函数示例
本示例使用Choose函数来显示一个名称,该名称对应於用Ind参数传递到过程之中的索引。
FunctionGetChoice(IndAsInteger)
GetChoice=Choose(Ind,"Speedy","United","Federal")
EndFunction
Chr函数
返回String,其中包含有与指定的字符代码相关的字符。
语法
Chr(charcode)
必要的charcode参数是一个用来识别某字符的Long。
说明
0到31之间的数字与标准的非打印ASCII代码相同。
例如,Chr(10)可以返回换行字符。
charcode的正常范围为0–255。
然而,在DBCS系统,charcode的实际范围为-32768到65535。
注意ChrB函数作用于包含在String中的字节数据。
ChrB总是返回一个单字节,而不是返回一个字符,一个字符可能是一个或两个字节。
ChrW函数返回包含Unicode的String,若在不支持Unicode的平台上,则其功能与Chr函数相同。
注意VisualBasicfortheMacintosh不支持Unicode字符串。
因此,当n值在128–65,535范围内时,ChrW(n)不能像在Windows环境中那样返回所有的Unicode字符。
相反地,当Unicode的n值大于127时,ChrW(n)会试图做一个“最好的猜测”。
因此,在Macintosh环境中,不能使用ChrW。
Chr函数示例
本示例使用Chr函数来返回指定字符码所代表的字符。
DimMyChar
MyChar=Chr(65)'返回A。
MyChar=Chr(97)'返回a。
MyChar=Chr(62)'返回>。
MyChar=Chr(37)'返回%。
Command函数
返回命令行的参数部分,该命令行用于装入MicrosoftVisualBasic或VisualBasic开发的可执行程序。
VisualBasicCommand函数在MicrosoftOffi