VB中的常用函数.docx
《VB中的常用函数.docx》由会员分享,可在线阅读,更多相关《VB中的常用函数.docx(40页珍藏版)》请在冰豆网上搜索。
VB中的常用函数
1VB中常用的函数和语句
一、Val函数
返回包含于字符串内的数字,字符串中是一个适当类型的数值。
语法
Val(string)
必要的string参数可以是任何有效的字符串表达式.
说明
Val函数,在它不能识别为数字的第一个字符上,停止读入字符串。
那些被认为是数值的一部分的符号和字符,例如美圆号与逗号,都不能被识别。
但是函数可以识别进位制符号&O(八进制)和&H(十六进制)。
空白、制表符和换行符都从参数中被去掉。
下面的返回值为1615198:
Val("1615198thStreetN.E.")
在下面的代码中,Val为所示的十六进制数值返回十进制数值-1。
Val("&HFFFF")
注意Val函数只会将句点(.)当成一个可用的小数点分隔符。
当使用不同的小数点分隔符时,如在国际版应用程序中,代之以CDbl来把字符串转换为数字。
'=====================================
Val函数示例
本示例使用Val函数返回字符串中所含的数值。
DimMyValue
MyValue=Val("2457")'返回2457。
MyValue=Val("2457")'返回2457。
MyValue=Val("24and57")'返回24。
参考资料:
MSDNVB参考
二、Str函数
返回代表一数值的Variant(String)。
语法
Str(number)
必要的number参数为一Long,其中可包含任何有效的数值表达式。
说明
当一数字转成字符串时,总会在前头保留一空位来表示正负。
如果number为正,返回的字符串包含一前导空格暗示有一正号。
使用Format函数可将数值转成必要的格式,如日期、时间、货币或其他用户自定义格式。
与Str不同的是,Format函数不包含前导空格来放置number的正负号。
注意
Str函数只视句点(.)为有效的小数点。
如果使用不同的小数点(例如,国际性的应用程序),可使用CStr将数字转成字符串。
forexample:
Str函数示例
本示例使用Str函数来将一个数字转成字符串。
当数字转成字符串时,字符串的第一个位一定是空格或是正负号。
DimMyStringMyString=Str(459)\'返回"459"。
MyString=Str(-459.65)\'返回"-459.65"。
MyString=Str(459.001)\'返回"459.001"。
三、CStr函数
说明
传回一个转换为String资料型态的运算式。
语法
CStr(expression)
引数expression可以是任何有效的运算式。
注解
通常,您可以使用资料型态转换函数,以特定的资料型态,取代预设的资料型态来进行运算。
例如,使用CStr来强制将执行结果以String资料型态表示。
您可以使用CStr函数而非Str函数,在任何语言的版本中,让任何一个资料型态转换至String资料型态。
例如,不同的小数点分隔符号,会依据您系统的国别设定来做适当的确认。
引数expression将决定函数传回值为何,请叁考下表:
若expression内容为传回值
Boolean包含"True"或"False"的字串。
Date包含一个日期的字串,其格式为您系统的简短日期格式。
Null产生执行时期错误。
Empty一个长度为0的字串("")。
Error包含一个英文字"Error"以及一个错误代码的字串。
其他数值包含这个数值的字串。
(一)类型转换类函数
1.CType(X)
[格式]:
P=CBool(X)
'将X转换为“布尔”(Boolean)类型
P=CByte(X)
'将X转换为“字节”(Byte)类型
P=CCur(X)
'将X转换为“金额”(Currency)类型
P=CDate(X)
'将X转换为“日期”(Date)类型
P=CDbl(X)
'将X转换为“双精度”(Double)类型
P=CInt(X)
'将X转换为“整型”(Integer)类型
P=CLng(X)
'将X转换为“长整型”(Long)类型
P=CSng(X)
'将X转换为“单精度”(Single)类型
P=CStr(X)
'将X转换为“字符串”(String)类型
P=Cvar(X)
'将X转换为“变体型”(Variant)类型
P=CVErr(X)
'将X转换为Error值
[范例]:
(1).CStr(13)+CStr(23)
'数值转换成字符串后,用"+"号连接,结果:
1323
(2).CInt("12")+12
'字符串转换成整型后与12相加,结果:
24
(3).P=CInt(True)
'输出结果为-1
'布尔值与数值的转换时要注意,布尔值只有True和False,其中True在内存中为-1,False存为0
(4).CBool(-0.001)
'输出结果为True
'将数值转换为布尔型时,等于0的数值将得到False,不等于0的数值得到True.
2.Int(X),Fix(X):
取X的整数值
[格式]:
P=Int(X)'取<=X的最大整数值
P=Fix(X)'取X的整数部分,直接去掉小数
[范例]:
(1)Int(-54.6)
'结果为-55,取<=-54.6的最大整数
(2)Fix(54.6)
'结果为54,取整数并直接去掉小数
(二)常用数学函数
[格式]:
1.Abs(N)取绝对值
例:
Abs(-3.5)结果:
3.5
2.Cos(N)余弦函数
例:
Cos(0)结果:
1
3.Exp(N)e为底的指数函数
例:
Exp(3)结果:
20.068
4.Log(N)以e为底的自然对数
例:
Log(10)结果:
2.3
5.Rnd[(N)]产生随机数
例:
Rnd结果:
0--1之间的数
6.Sin(N)正弦函数
例:
Sin(0)结果:
0
7.Sgn(N)符号函数
'说明:
取正负号。
Y=Sgn(X)既X>0则Y=1;X=0则Y=0;X<0则Y=-1
8.Sqr(N)平方根
例:
Sqr(9)结果:
3
9.Tan(N)正切函数
例:
Tan(0)结果:
0
10.Atn(N)反切函数
例:
Atn(0)结果:
0
[注意]:
在三角函数中,以弧度表示。
(一)字符串类函数:
1.ASC(X),Chr(X):
转换字符字符码
[格式]:
P=Asc(X)返回字符串X的第一个字符的字符码
P=Chr(X)返回字符码等于X的字符
[范例]:
(1)P=Chr(65)
‘输出字符A,因为A的ASCII码等于65
(2)P=Asc(“A”)
‘输出65
2.Len(X):
计算字符串X的长度
[格式]:
P=Len(X)
[说明]:
空字符串长度为0,空格符也算一个字符,一个中文字虽然占用2Bytes,但也算一个字符。
[范例]:
(1)令X=””(空字符串)
Len(X)输出结果为0
(2)令X=”abcd”
Len(X)输出结果为4
(3)令X=”VB教程”
Len(X)输出结果为4
3.Mid(X)函数:
读取字符串X中间的字符
[格式]:
P=Mid(X,n)
由X的第n个字符读起,读取后面的所有字符。
P=Mid(X,n,m)
由X的第n个字符读起,读取后面的m个字符。
[范例]:
(1)X=”abcdefg”
P=Mid(X,5)
结果为:
P=”efg”
(2)X=”abcdefg”
P=Mid(X,2,4)
结果为P=”bcde”
4.Replace:
将字符串中的某些特定字符串替换为其他字符串
[格式]:
P=Replace(X,S,R)
[说明]:
将字符串X中的字符串S替换为字符串R,然后返回。
[范例]:
X=”VBisverygood”
P=Replace(X,good,nice)
输出结果为:
P=”VBisverynice”
5.StrReverse:
反转字符串
[格式]:
P=StrReverse(X)
[说明]:
返回X参数反转后的字符串
[范例]:
(1)X=”abc”
P=StrReverse(X)
输出结果:
P=”cba”
6.Ucase(X),Lcase(X):
转换英文字母的大小写
[格式]:
P=Lcase(X)
‘将X字符串中的大写字母转换成小写
P=Ucase(X)
‘将X字符串中的小写字母转换成大写
[说明]:
除了英文字母外,其他字符或中文字都不会受到影响。
[范例]:
(1)令X=”VBandVC”
则Lcase(X)的结果为”vbandvc”,Ucase(X)的结果为”VBANDVC”
7.InStr函数:
寻找字符串
[格式]:
P=InStr(X,Y)
从X第一个字符起找出Y出现的位置
P=InStr(n,X,Y)
从X第n个字符起找出Y出现的位置
[说明]:
(1)若在X中找到Y,则返回值是Y第一个字符出现在X中的位置。
(2)InStr(X,Y)相当于InStr(1,X,Y)。
(3)若字符串长度,或X为空字符串,或在X中找不到Y,则都返回0。
(4)若Y为空字符串,则返回0。
日期时间类函数:
1.Year(X),Month(X),Day(X):
取出年,月,日
[格式]:
P=Year(X)
取出X“年”部分的数值
P=Month(X)
取出X“月”部分的数值
P=Day(X)
取出X“日”部分的数值
[说明]:
Year返回的是公元年,若X里只有时间,没有日期,则日期视为#1899/12/30#
2.Hour,Minute,Second函数:
取出时,分,或秒
[格式]:
P=Hour(X)
取出X“时”部分的数值
P=Minute(X)
取出X“分”部分的数值
P=Second(X)
取出X“秒”部分的数值
[说明]:
Hour的返回值是0---23之间
[范例]:
X=10:
34:
23
P=Hour(X)
Q=Minute(X)
R=Second(X)
则输出结果:
P=10,Q=34,R=23
3.DateSerial函数:
合并年,月,日成为日期
[格式]:
DateSerial(Y,M,D)
其中Y是年份,M为月份,D为日期
[说明]:
(1)M值若大于12,则月份从12月起向后推算M-12个月;若小于1,则月份从1月起向后推算1-M个月。
(2)若日期D大于当月的日数,则日期从当月的日数起,向后推算D-当月日数;若小于1,则日期从1日起向前推算1-D日。
[范例]:
P=DateSerial(2000,02,02)
则结果为P=2000/02/02
4.TimeSerial函数:
合并时,分,秒成为时间
[格式]:
P=TimeSerial(H,M,S)
其中H为小时数,M为分钟数,S为秒数
[说明]:
推算原理同上面的DateSerial
[范例]:
P=TimeSerial(6,32,45)
结果为:
P=6:
32:
45
5.Date,Time,Now函数:
读取系统的日期时间
[格式]:
P=Date()
P=Time()
P=Now()
[说明]:
这三个函数都无参数
[范例]:
若当前时间为2003年8月29日晚上19点26分45秒,则
P=Now()
结果为:
P=2003-08-2919:
26:
45
6.MonthName:
返回月份名称
[格式]:
P=MonthName(X)
[说明]:
X参数可传入1---12,则返回值为“一月”、“二月”……,但是在英文Windows环境下,返回的是”January”,”February”……
[范例]:
P=MonthName
(1)
则P=“一月”
7.WeekdayName:
返回星期名称
[格式]:
P=WeekdayName(X)
[说明]:
X参数可传入1—7,则返回值为“星期日”,“星期一”……,但是在英文windows环境下,返回的是”Sunday”,”Monday”……
[范例]:
P=WeekdayName
(1)
结果为:
P=”星期日”
第三章VB的程序设计基础
2.1VB编码规则
1.语言元素
VB的语言基础是BASIC语言,VB程序的语言元素主要由:
关键字(如:
Dim、Print、Cls)
函数(如:
Sin()、Cos()Sqr())
表达式(如:
Abs(-23.5)+45*20/3)
语句(如:
X=X+5、IF……ELSE……ENDIF)等组成。
2.VB代码书写规则
(1)程序中不区分字母的大小写,Ab与AB等效;
(2)系统对用户程序代码进行自动转换:
1)对于VB中的关键字,首字母被转换成大写,其余转换成小写
2)若关键字由多个英文单词组成,则将每个单词的首字母转换成大写
3)对于用户定义的变量、过程名,以第一次定义的为准,以后输入的自动转换成首次定义的形式
3.语句书写规则
(1)在同一行上可以书写多行语句,语句间用冒号(:
)分隔
(2)单行语句可以分多行书写,在本行后加续行符:
空格和下划线_
(3)一行允许多达255个字符
4.程序的注释方式
(1)整行注释一般以Rem开头,也可以用撇号';
(2)用撇号'引导的注释,既可以是整行的,也可以直接放在语句的后面,最方便;
(3)可以利用“编辑”工具栏的“设置注释块”、“解除注释块”来将设置多行注释。
5.保留行号和标号
VB源程序接受行号与标号,但不是必须的(早期的BASIC语言中必须用行号)。
标号是以字母开始以冒号结束的字符串,一般用在GOTO语句(现在很少用)中。
2.2VB的语言基础
1.数据类型
VB的标准数据类型
数据类型关键字类型符前缀存储空间范围
数值数据类型字节型ByteByt1个字节0到255
整型Integer%Int2个字节-32,768到32,767
长整型Long&Lng4个字节-2,147,483,648到2,147,483,647
单精度型Single!
Sng4个字节负数:
-3.402823E38到-1.401298E-45;正数:
1.401298E-45到3.402823E38
双精度型Double#Dbl8个字节负数:
-1.79769313486232E308
-4.94065645841247E-324;
正数:
4.94065645841247E-324
1.79769313486232E308
货币型Currency@Cur8个字节从-922,337,203,685,477.5808
到922,337,203,685,477.5807
逻辑型BooleanBln2个字节True或False
日期型DateDtm8个字节100年1月1日到9999年12月31日
对象型ObjectObj4个字节任何Object引用
变长字符型String$Str10字节加字符串长度0到大约20亿
定长字符型String$Str字符串长度1到大约65,400
变体数字型VariantVnt16个字节任何数字值,最大可达Double的范围
变体字符型VariantVnt22个字节加字符串长度与变长String有相同的范围
注意:
1)VB中对没有声明的变量其缺省的数据类型是变体型,可以用来存储各种数据,但所占用的内存比其它类型都多。
为提高运行效率(整型效率较高),或达到一定的运算精确度(浮点型精度较高,但运行较慢),应合理的定义数据类型。
2)逻辑型数据只有True和False两个值,转换成整型时,True=-1,False=0,将其它类型转换成逻辑型时,非0数转换为True,0转换为False。
3)字符型可以包括所有的西文字符和汉字,字符必须用双引号括""起来,如:
"abc123"
4)货币型数据主要用来表示货币值,用8个字节存储,货币型是定点数,精确到小数点后面第4位,第五位四舍五入。
整数部分最多15位。
例如:
3.56@、65.123456@都是货币型。
5)日期型数据按8字节的浮点数来存储,日期型数表示方式有两种:
可以用号码符#括起来,也可以用数字序列表示(小数点左边的数字代表日期,右边代表时间,0为午夜,0。
5为中午12点,负数表示是1899年12月31日前的日期和时间)。
例:
#1999-08-1110:
25:
00pm#
#08/23/99#
#03-25-7520:
30:
00#
#98,7,18#
以上都是有效的日期型数据。
在VB中会自动转换成mm/dd/yy(月/日/年)的形式。
如:
#3/22/2002##2002-3-2214:
30:
20#
DimTAsDate
T=-2.5
PrintT'打印出来的结果是1899-12-2812:
00:
00
5)任何数据类型的数组都需要20个字节的内存空间,加上每一数组维数占4个字节,再加上数据本身所占用的空间。
数据所占用的内存空间可以用数据元数目乘上每个元素的大小加以计算。
例如,以4个2字节之Integer数据元所组成的一维数组中的数据,占8个字节。
这8个字节加上额外的24个字节,使得这个数组所需总内存空间为32个字节。
用户定义的数据类型
格式:
Type数据类型名
数据类型元素名1As类型名
数据类型元素名2As类型名
……
数据类型元素名nAs类型名
EndType
说明:
“数据类型名”是要定义的数据类型的名字,其命名规则与变量的命名规则相同。
“数据类型元素名”同上,且不能是数组名;“类型名”可以是任何基本数据类型,也可以是用户定义类型。
举例:
TypeStuType
xmAsString*4
xhAsInteger
sxAsSingle
ywAsSingle
yyAsSingle
EndType
注意:
记录类型中的元素可以是变长字符串,也可以是定长字符串。
当在随机文件中使用时,必须是定长字符串,其长度用类型名称加一个星号和常数指明。
一般格式为:
String*常数。
记录类型的定义必须放在模块(包括标准模块和窗体模块)的声明部分,在使用记录类型之前,必须用Type语句加以定义。
在一般情况下,记录类型在标准模块中定义,其变量可以出现在工程的任何地方,当在标准模块中定义时,关键字Type前可以有Public(默认)|Private,而如果在窗体模块中定义,则必须在前面加上关键字Private。
在记录类型中不能使用动态数组。
枚举类型
定义:
将变量的值一一列举出来,变量的值仅限于列举出来的值的范围内。
格式:
[Public|Private]Enum类型名称
成员名[=常数表达式
成员名[=常数表达式]
…
EndEnum
说明:
(1)各参数说明:
Public与Private可选,前者表示所定义的Enum类型在整个工程中都可见,是默认选项,后者表示只能在所声明的模块中可见。
类型名称:
表示所定义的Enum类型的名称。
成员名:
用来指定所定义的Enum类型组成元素的名称。
常数表达式:
可选,元素的值是Long类型。
(2)”常数表达式”可省。
在默认情况下,枚举中的第一个常数被初始化为0,其后的常数则初始化为比其前面的常数大1的数值。
如:
PublicEnumDays
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
EndEnum
其中,Sunday的值为0,Monday的值为1,其余依次类推。
(3)可以使用赋值语句给枚举中的常数赋值,所赋的值可以是任何长整数,包括负数。
若希望用小于0的常数代表出错条件,则可以给枚举常数赋一个负值。
如:
PublicEnumWorkdays
Saturday
Sunday=0
Monday
Tuesday
Wednesday
Thursday
Friday
Invalid=-1
EndEnum
提问:
各成员的值各为多少?
(4)VB将枚举中的常数数值看作长整数。
如果把一个浮点数值赋给一个枚举中的常数,VB会将该数值取整为最接近的长整数。
(5)当对一个枚举中的常数赋值时,可以使用另一个枚举中的常数的数值。
例见书P57。
声明枚举类型后,就可以声明该枚举类型的变量,然后使用该变量存储枚举常数的数值。
2.常量与变量
(1)常量
在程序执行的过程中保持不变的数据称为常量。
在VB中,常量分为两种,文字常量和符号常量。
符号常量又分为用户自定义和系统定义两种。
1)文字常量(直接常量)
文字常量直接出现在代码中,也称为字面常量或直接常量,文字常量的表示形式决定它的类型和值。
例如:
字符型:
"Iamastudent"放在一对引号当中。
数值型:
3.14159、56、8.432E-15
日期型:
#3jan,98#放在一对#当中。
逻辑型:
True、False
文字常量在程序中直接给出值的数据,如:
123、123&、123.45、1.234E2、123D3分别表示整型、长整型、单精度浮点型(小数形式)、单精度浮点型(指数形式)、双精度浮点型。
八进制常数:
在数值前加&O,如&O123
十六进制常数:
在数值前加&H,如&H123
2)用户声明的符号常量
用Const来声明:
Const符号常量名[As类型]=表达式
如:
ConstPI=3.14159'声明了常量PI,代表3.14159,单精度型
ConstMAXAsInteger=&O144''声明了常量MAX,代表八进制数
144,整型
ConstCOUNT#=45.67'声明了常量COUNT,代表45.67,双精
度型
符号常量在程序中不可以再赋值了
3)系统提供的常量
系统定义的常量位于对象库中,在对象浏览器中的VisualBasic(VB)和VisualBasicforAplication(VBA)等对象库中列出了VB的常量。
这些常量可以与应用程序的对象、方法、属性一起使用。
如:
Form1.WindowsState=vbMaximized表示将窗口极大化。
Form1.WindowsState=