
3.4 常用内部函数
Visual Basic为编程人员提供了各种函数,应用于程序设计中,通常把Visual Basic中提供的函数称为内部函数,编程人员在应用程序中可以直接调用内部函数。同时Visual Basic还允许编程人员根据需要自己定义函数,以实现特定的功能,自定义函数将在本书的第6章讲解。
函数能够实现数据运算或转换等功能,每个函数都有且必须有一个结果,称为函数值或返回值。调用函数通常用函数名加一对圆括号,并在括号内给出参数,函数调用的一般格式为:
函数名([<参数表>])
其中,有些函数在调用时不需要给出参数。
Visual Basic中,函数大致可以分为数值函数、字符函数、转换函数、日期函数、格式输出函数等。
3.4.1 数值函数
数值函数的参数和返回值通常也是数值型数据,这里只介绍本教程中常用的数值类函数。
1.绝对值函数Abs()
格式:
Abs(数值表达式)
功能:求数值表达式的绝对值。
例如,在立即窗口中输入命令:
? Abs(-34)
输出结果为:
34
2.平方根函数Sqr()
格式:
Sqr(数值表达式)
功能:求数值表达式的平方根,数值表达式的值必须大于等于0。
例如,在立即窗口中输入命令:
? Sqr(9)
输出结果为:
3
3.符号函数Sgn()
格式:
Sgn(数值表达式)
功能:根据数值表达式值的范围不同,输出不同的值。如果数值表达式的值大于0,则函数值为1;如果数值表达式的值等于0,则函数值为0;如果数值表达式的值小于等于0,则函数的值为-1。
例如,在立即窗口中输入命令:
? Sgn(-9)
输出结果为:
-1
4.随机数函数Rnd()
格式:
Rnd()
功能:产生大于等于0但小于1的双精度型随机数,括号可以省略。
例如,在立即窗口中输入命令:
? Rnd
输出结果为0到1之间的小数,每次结果都不同。如果要产生一定范围内的随机整数,可以根据下面表达式得到需要范围内的整数。
Int(Rnd * <上界-下界+ 1> +下界)
例如,要产生50~100之间的整数,则上界是100,下界是50,表达式为:
Int(Rnd * 51 + 50)
为了保证每次运行时产生不同序列的随机数,需要在调用Rnd函数之前先执行Randomize语句。
格式:
Randomize
5.取整函数
取整函数包括Int()、Fix()、Round()。
格式:

功能:Int返回不大于数值表达式的最大整数;Fix返回数值表达式的整数部分;Round对数值表达式的值四舍五入取整。
例如,在立即窗口输入下面命令:
?Int(-45.6)
输出结果为:
-46
输入命令:
?Fix(-45.6)
输出结果为:
-45
输入命令:
?Round(-45.6)
输出结果为:
-46
3.4.2 字符函数
字符函数实现了对于字符或字符串进行操作的函数,函数返回值的类型可能是字符型、数值型或逻辑型等。
1.取子串函数
取子串函数包括取左子串函数Left()、取右子串函数Right()和取子串函数Mid()。
(1)取左子串函数Left()
格式:
Left(<字符表达式>, <数值表达式>)
功能:从<字符表达式>的左部取<数值表达式>指定的若干字符。其中,<字符表达式>的值是字符串,<数值表达式>的值是正整数。
例如,在立即窗口输入下面命令:
?Left("Information",5)
输出结果为:
Infor
(2)取右子串函数Right()
格式:
Right(<字符表达式>, <数值表达式>)
功能:从<字符表达式>的右部取<数值表达式>指定的若干的值是字符串,<数值表达式>的值是正整数。
例如,在立即窗口输入下面命令:
?Right("Information",4)
输出结果为:
tion
(3)取子串函数Mid()
格式:
mid(<字符表达式>, <数值表达式1> [, <数值表达式2>])
功能:在<字符表达式>中,从<数值表达式1>指定位置开始取<数值表达式2>个字符,组成一个新的字符串。其中,<字符表达式>的值是字符串,<数值表达式1>是指定取子串位置的正整数,<数值表达式2>是指定所取子串长度的正整数。数值表达式2可以省略,表示从数值表达式1指定位置一直取到字符串的末尾。
例如,在立即窗口输入下面命令:
?Mid("Information",4,2)
输出结果为:
or
输入命令:
? Mid("Information",6)
输出结果为:
mation
2.求字符串长度函数Len()
格式:
Len(<字符表达式>)
功能:计算字符串的长度,中文字符和西文字符都按一个字符计算。
例如,在立即窗口输入下面命令:
?Len("Information世界")
输出结果为:
13
3.求子串位置函数InStr()
格式:
InStr (<字符表达式1>, <字符表达式2>)
功能:在<字符表达式1>中查找<字符表达式2>出现的位置,如果<字符表达式2>没有在<字符表达式1>中出现,则返回0。
例如,在立即窗口输入下面命令:
?Instr("Information", "for")
输出结果为:
3
又如,在立即窗口输入下面命令:
?InStr("for", "Information")
输出结果为:
0
4.子串替换函数Replace()
格式:
Replace(<字符表达式1>, <字符表达式2>, <字符表达式3>)
功能:在<字符表达式1>中,用<字符表达式3>替换<字符表达式2>。
例如,在立即窗口输入下面命令:
?Replace ("Infomation", "fo", "FOR")
输出结果为:
InFORmation
5.空格字符串生成函数Space()
格式:
Space(<数值表达式>)
功能:生成<数值表达式>个空格组成的字符串。
例如,在立即窗口输入下面命令:
?"S" + Space(5) + "S"
输出结果为:(用表示空格,在屏幕中不显示)
SS
6.产生重复字符函数String()
格式:
String(<数值表达式>, <字符表达式>)
功能:产生由字符表达式第1个字符重复构成的字符串,<数值表达式>给出了要产生的字符个数。
例如,在立即窗口输入下面命令:
?String(5, "*")
输出结果为:
*****
又如,在立即窗口输入下面命令:
?String(3, "A*")
输出结果为:
AAA
7.删除字符串空格函数
(1)删除字符串首尾部空格函数Trim()
格式:
Trim(<字符表达式>)
功能:删除<字符表达式>首部和尾部的空格。
例如,在立即窗口输入下面命令:
?"S" + TRIM("Information
") + "S"
输出结果为:
SInformationS
(2)删除字符串首部空格函数Ltrim()
格式:
Ltrim(<字符表达式>)
功能:删除<字符表达式>首部的空格。
例如,在立即窗口输入下面命令:
?"S" + Ltrim("Information") + "S"
输出结果为:
SInformationS
(3)删除字符串尾部空格函数Rtrim()
格式:
Rtrim(<字符表达式>)
功能:删除<字符表达式>尾部的空格。
例如,在立即窗口输入下面命令:
?"S" + Rtrim("Information
") + "S"
输出结果为:
SInformationS
8.英文字母大小写转换函数
(1)小写字母转换为大写字母函数Ucase()
格式:
Ucase (<字符表达式>)
功能:将字符串中的所有小写字母转换为大写字母。
例如,在立即窗口输入下面命令:
? Ucase ("Information")
输出结果为:
INFORMATION
(2)大写字母转换为小写字母函数Lcase()
格式:
Lcase (<字符表达式>)
功能:将字符串中的所有大写字母转换为小写字母。
例如,在立即窗口输入下面命令:
? Lcase ("InforMation")
输出结果为:
information
3.4.3 转换函数
转换函数为Visual Basic数据处理提供了方便,本节主要介绍常用的字符和ASCII码值的转换函数以及数值和字符串的转换函数。
1.将字符转换成ASCII码值函数Asc()
格式:
Asc(<字符表达式>)
功能:给出<字符型表达式>最左边字符的ASCII码值。
例如,在立即窗口输入下面命令:
?Asc("C")
输出结果为:
67
2.将ASCII码值转换成字符函数Chr()
格式:
Chr(<数值表达式>)
功能:将<数值型表达式>的值作为ASCII码,给出其所对应的字符。
例如,在立即窗口输入下面命令:
?Chr(67)
输出结果为:
C
3.数值型数据转换为字符型数据函数Str()
格式:
Str(<数值表达式>)
功能:将<数值表达式>值的类型由数值型转换为字符型。
例如,在立即窗口输入下面命令:
?Str(3.1415926)
输出结果为:
3.1415926
4.字符串转换为数值函数Val()
格式:
Val(<字符表达式>)
功能:将字符串前面符合数值型数据要求的数字字符转换为数值型数据。如果字符串前面无数字字符,则转换结果为0。
例如,在立即窗口输入下面命令:
?Val("3.1415是π的值")
输出结果为:
3.1415
3.4.4 日期时间函数
通过日期时间函数,可以获得与计算机系统的日期和时间相关的数据。
1.系统日期函数Date()
格式:
Date()
功能:返回所用计算机系统的当前日期,返回值的类型为日期型数据,函数的括号可以省略。
2.系统时间函数Time()
格式:
Time()
功能:返回所用计算机系统的当前时间,返回值的类型为日期型数据,函数的括号可以省略。
3.系统日期时间函数Now()
格式:
Now()
功能:返回系统当前的日期和时间,返回值类型为日期型数据,函数的括号可以省略。
4.年份函数Year()
格式:
Year(<参数>)
功能:取日期型或日期时间型数据对应的年份,返回值为整数数值,参数为日期型数据。
例如,在立即窗口输入下面命令:
Y = #2014/03/23#
?Year(Y)
输出结果为:
2014
5.月份函数Month()
格式:
Month(<参数>)
功能:取日期型数据对应的月份,返回值为整数数值,参数为日期型数据。
例如,在立即窗口输入下面命令:
Y = #2014/03/23#
?Month(Y)
输出结果为:
3
6.天数函数Day()
格式:
Day(<参数>)
功能:取日期型数据对应月份的第几天,返回值为整数数值(N),参数为日期型数据。
例如,在立即窗口输入下面命令:
Y = #2014/03/23#
?Day(Y)
输出结果为:
23
3.4.5 格式输出函数
格式输出函数Format( )可以使数值、日期或字符串等类型的数据按照规定的格式输出。
格式:
Format(<表达式>, <格式字符串>)
其中:
(1)<表达式>:要格式输出的表达式。
(2)<格式字符串>:规定了表达式值的输出格式。格式字符串有数值格式、日期格式和字符串格式3种类型,格式字符串两边要加双引号。
有关Visual Basic中对输出数据格式控制的详细内容,请查阅相关的参考资料。这里只介绍在控制格式字符串中最常用的格式化符号即0和#。其中0是数字占位符,显示1位数字或0,#为数字占位符,显示1位数字或什么都不显示。
例如,在立即窗口输入下面命令:
Print Format(123.456, "0000.0000")
输出结果为:
0123.4560
又如,在立即窗口输入下面命令:
Print Format(123.456, "####.####")
输出结果为:
123.456
再如,在立即窗口输入下面命令:
Print Format(123.456, "0000.##")
输出结果为:
0123.46
3.4.6 Shell函数
在Visual Basic中,可以用Shell函数调用任何Windows下的应用程序。
格式:
Shell(<文件名> [,<窗口风格>])
其中:
(1)<文件名>:要执行的应用程序文件名(包含路径)。它必须是可执行文件(扩展名为.com、.exe等)。
(2)<窗口风格>:要执行的应用程序窗口的样式。若省略该参数,则应用程序以一个具有焦点的最小化窗口来执行,<窗口风格>的取值范围为0~6之间的整数。
例如,如果要在运行应用程序时单击窗体,打开Windows下的记事本应用程序,可以通过如下代码实现:
