第2章VB语言基础在使用一种程序设计语言进行应用程序的设计之前,必须先掌握它的基本语法规则。对于VB也是如此,在利用窗体和控件为应用程序建立界面后同样需要编写代码,程序中的大部分实际工作是用程序代码来处理的。本章将介绍VB代码编写的基础知识,包括数据类型、常量、变量、表达式、内部函数等。2.1数据类型2.1.1基本数据类型为了更好的处理各种数据,VB系统定义了多种数据类型,表2-1列出了常见基本数据类型。表2-1VisualBasic的基本数据类型数据类型关键字类型符前缀占字节数范围举例字节型Byte无byt10~255125逻辑型Boolean无bln2True,falseTrue,False整型Integer%int2-32768~327673245长整型Long&lng4-2147483648~21474836472123456677单精度型Single!sng4负数:-3.402823E38~-1.401298E-45正数:1.401298E-45~3.402823E38-3.4E191.4E-10双精度型Double#dbl8负数:-1.79769313486232D308~-4.94065645841247D-324正数:4.94065645841247D-324~1.79769313486232D3081.123456789货币型Currency@cur8-922337203685477.5808~922337203685477.580712.345@日期型Date无dtm801,01,100~12,31,999903/25/1999字符型String$str字符串长决定0~65535个字符abcdefg对象型Object无obj4任何对象引用Command变体型Variant无vnt按需分配任一值1.数值型数据VB中有6种数值类型数据:整型(Integer)、长整型(Long)、单精度型(Single)、双精度型(Double)、货币型(Currency)、字节型(Byte)。1)常规整型数据(Integer)常规整型数据简称为整型,表示不带小数点和指数符号的数,可以是正整数、负整数或0。在VB中整数表示形式:+n[%],%是整型类型符号,可省略。n则根据整数所属进制数范围取不同值,如十进制整数则包含数字0~9,十六进制数则由数字0~9、A~F组成,并以&H引导,其后面的数据位数4位。八进制数由数字0~7组成,并以&O引导,其后面的数据位数6位。2)长整型数据(Long)长整型数也是整数,在计算机中存储时占用4字节(32位),表示的范围更大。在VB中,长整型数中的正号可以省略,并且在数值中不能出现逗号(,)。与常规整型数一样,长整型数也根据所属进制数进行数据的数字组成,如十进制整数则包含数字0~9。3)单精度型数据(Single)单精度数用来表示带有小数部分的实数,以4个字节(32位)存储,其中符号占1位,指数占8位,其余23位表示尾数,并包含一个附加的隐含位。单精度型数据的可以精确到7位十进制数。单精度型数的指数用E(e)表示,单精度数可以用定点形式和浮点形式来表示。定点数形式表示例:-1.2+5.34-923.345567浮点数形式表示例:-2.1E76.35E+2024.5E-54)双精度型数据(Double)双精度数据用8个字节(64位)存储,其中符号占1位,指数占11位,其余52位用于表示尾数,并包含一个附加的隐含位。双精度型数据可以精确到15或16位十进制数。表示双精度浮点数时,对小数形式在数字后加“#”,指数形式用“D”表示,或在指数形式后加“#”。例:12.23#1.2D+30.12E+2#5)货币型数据(Currency)货币型数据是为用于货币计算而设置的定点实数或整数,该类数据以8个字节存储,最多保留小数点后4位和小数点前15位。6)字节型数据(Byte)字节型数据表示0~255之间的整数,以1个字节的无符号二进制数存储。【注意】数值型数据的使用说明在VB中,声明和使用数值型数据时,应注意以下几点:(1)如果数据中包含小数,则应使用Single、Double或Currency型。(2)如果数据为二进制数,则使用Byte数据类型。(3)数值型数据都有一个有效范围值,程序中的数如果超出规定的范围,将会出现“溢出”信息。如小于范围的下限值,系统将按“0”处理,如大于上限值,则系统按上限值处理,并显示出错信息。(4)所有数值变量可互相赋值。2.字符型数据(String)字符型是存放字符类型数据,字符可以包括所有西文字符和汉字,字符两侧用双引号括起。字符串是放在双引号内的若干个字符,其中一个西文字符占一个字节,一个汉字或全角字符占两个字节,长度为0的字符串称为空字符串。例:1234、a、abcd、计算机。在VB中包含两种类型的字符串:变长字符串和定长字符串。其中变长字符串指字符串的长度是不固定的,由实际字符串的长度决定;定长字符串则是在程序执行过程中,始终保持其长度不变的字符串,其长度用类型名称加上一个星号(*)和常数指明。指定定长字符串的格式为:String*常数。例如对一个声明了长度为8的名为Name的字符串变量(NameAsString*8),如果赋予字符串的字符数少于8个,则用空格将不足部分填满;如果实际赋予的字符数大于8个,则截去超出部分的字符。【注意】(1)表示空字符串,而表示的是有一个空格的字符串;(2)如字符串中本身含有双引号,则用两个连续的双引号表示。例:表示字符串计算机ABC,正确的表示形式为:计算机ABC3.日期型数据(Date)日期型数据用于表示日期和时间,表示的日期范围是从公元100年1月1日~9999年12月31日,时间范围为0:00:00~23:59:59。日期型数据通常用两个“#”符号把表示日期和时间的值括起来。如:#03/22/2003##02/10/199812:30:00#如输入的日期或时间是非法的或不存在的,系统将提示出错。4.逻辑型数据(Boolean)逻辑型数据用于逻辑判断,只有两个值:真(True)和假(False)。当逻辑数据转换成整数数据时,True将转换为–1,False转换为0;当其他数值类型转换为逻辑型数据时,非0数转换为True,0转换为False。5.对象型数据(Object)对象型数据可用来表示应用程序中或某些其他应用程序中的对象。用set语句指定一个被声明为object的变量,去引用应用程序中所识别的任何实际对象。6.变体型数据(Variant)变体型数据是一种可变的数据类型,可以存放任何类型的数据。是所有未定义的变量的默认数据类型,它对数据的处理完全取决于程序上下文的需要。如要测试变体型变量中保存的数值是什么类型的,可用函数VarType()进行检测,根据其返回值可确定实际是何数据类型。2.1.2自定义数据类型VB不仅提供了系统定义的以上基本数据类型,也允许用户自己定义数据类型,它由若干个基本数据类型组成。自定义类型必须通过Type语句来声明,其类型有两种:Private和Public。在标准模块中定义的自定义数据类型默认为Public(全局有效),在窗体模块中定义的为Private(窗体/模块级有效)。自定义数据类型格式如下:Type数据类型名数据类型元素名As类型名数据类型元素名As类型名.......EndType其中定义格式中的“数据类型名”是用户要自定义的数据类型的名称,命名规则与变量的命名规则相同(见下一节);“数据类型元素名”也遵守变量命名规则;“类型名”可以是任何基本的数据类型,也可以是用户已经自定义好的类型。例如,定义一个有关学生信息的自定义数据类型,名为students,该数据类型包含学生的姓名,学号,年龄三个信息。定义如下:TypestudentsNameAsString*8'学生姓名NOAsString*5'学号AgeAsInteger'年龄EndType定义好该students数据类型后,就可以在变量的声明中如同使用基本数据类型去使用该类型了。例:定义表示学生信息类型的变量A:DimAasstudents2.1.3枚举类型当一个变量只有几种可能的值,并在程序设计中需要将这些值一一列举时,VB提供了枚举数据类型用于处理这些有关的常数。所谓枚举就是指将变量的值一一列举出来,变量的取值只限于列举出来的值的范围内。枚举类型放在窗体模块、标准模块或公用模块中的声明部分,通过Enum语句定义,格式如下:[Public|Private]Enum类型名称成员名[=常数表达式]成员名[=常数表达式]……EndEnum其中:Public和Private为可选项,Public表示所定义的Enum类型在整个工程中都是有效的,默认情况下,Enum类型被定义为Public。Private表示所定义得Enum类型只在所声明得模块中是有效的。“类型名称”为所要定义的枚举类型的名称,也必须遵守变量的命名规则。“成员名”表示所定义的枚举类型的组成元素的名称,遵守变量的命名规则。常数表达式为可选项,表示元素的值。声明了枚举类型后,就可以声明该枚举类型的变量了,该变量的值即从枚举类型的成员值范围里获得。例:PublicEnumDaysSundayMondayTuesdayWednesdayThursdayFridaySaturdayEndEnumDimOnedayAsDays该例定义了一个枚举类型Days,它包括7个成员(Sunday到Saturday),并通过变量定义语句Dim(见下一节)定义了一个属于枚举类型Days的变量Oneday,Oneday在程序中的赋值将从Sunday至Saturday7个值中取得。2.2常量和变量在VB程序中,不同类型的数据既可以以常量的形式出现,也可以以变量的形式出现。常量:在程序运行过程中值始终保持不变的量;变量:在程序运行过程中其值可以改变的量。2.2.1常量或变量的命名规则在VB中,命名一个常量或变量的规则如下:1.须以字母或汉字开头,由字母、汉字、数字或下划线“_”组成,其组成字符不超过255个,最后一个字符可以是类型说明符。2.不能直接使用VB中的系统关键字、属性名、对象名、过程或函数方法名,如From、Text、If等;但可以把关键字嵌入常量名或变量名中使用,如Form_IF为合法变量名。3.不能包含句号、空格或者类型声明符($,%,@,#)等。4.命名时不区分大小写,如XYZ和xyz认为是同名。一般变量名首字母用大写,其余用小写;常量则全部用大写字母表示。例:以下为使用不当的变量名3a'以数字开头QWE'出现了空格Dim'使用了VB的关键字False'使用了VB的关键2.2.2常量在VB中常见的常量:直接常量、符号常量。1.直接常量直接常量是在程序代码中,以明显的方式给出的数据,可直接反映其数据类型;也可在常数值后紧跟类型符表明常数的数据类型。例如:字符串常量vb、9823数值常量123、332&、11.35、1.23E3逻辑常量True、False日期常量#03/22/1998##10:12:30#2.符号常量如果在程序中经常用到某些常量值,为了便于程序的阅读和修改,这些常量可以由用户定义的符号常量表示,以后用到该值时就用该符号名代表。常量一旦声明了在后面的代码中只能引用,不能改变,即不能再出现对该常量的赋值。符号常量包括两种:系统内部定义的常量和用户定义的常量。1)系统内部定义的常量系统内部定义的常量是指VB内置的一些便于记忆的常量,通常以vb开头,放置于对象库中。例如VB系统预先定义好vbModal代表1,vbModeless代表0。2)用户定义的常量尽管VB内部定义了大量的常量,但有时用户还是需要创建自己的符号常量,通常使用Const语句来定义常量的名字、类型和值。定义形式:Const符号常量名[AS类型]=表达式其中:符号常量名:遵循常量或变量的命名规则,一般都用大写字母表示。AS类型:说明要定义常量的数据类型,如省略了该项,则该常量的数据类型由后面的表达式决定。表达式:可以