124.1VisualBasic程序代码的组织方式VB程序程序代码窗体界面某些信息的说明过程事件过程通用过程Function过程Sub过程3指附在对象上的程序代码,是事件的处理程序,由事件调用。事件过程存储在窗体模块(.frm)中。形式:PrivateSub对象名_事件过程名([参数列表])……(事件过程代码)EndSub例如:PrivateSubCmdOK_Click()MsgBox“你好”EndSub1、事件过程(Private)4.1.1过程(Sub)4可被共享的代码构成的过程,即该代码可被不同的窗体所共享,或被一个窗体中不同的事件所共享。由事件过程或其他通用过程调用。形式:[Public/Private][Static]Sub过程名([参数列表])……(语句块)EndSub2、通用过程(Public/Private)4.1.1过程(Sub)54.1.2模块•窗体模块(.FRM)窗体内的事件过程、窗体及窗体中各个控件对象的属性和相关说明。•标准模块(.BAS)通用过程及相关说明。创建方法:工程→添加模块→输入代码•类模块(不作要求)6工程.VBP窗体模块.FRM标准模块.BAS窗体模块.FRM标准模块.BAS通用声明部分通用声明部分通用过程部分通用过程部分事件过程部分事件过程部分通用声明部分通用声明部分通用过程部分通用过程部分74.2代码行的书写规则语句定义符[语句体]语句的一般形式:语句的功能(没有或省略)具体操作和说明例如:DimaAsInteger8•VB代码中不区分字母大小写为了提高程序的可读性,VB对用户程序代码进行自动转换。对于VB中的关键字,首字母总被转换成大写,其余字母被转换成小写。若关键字由多个英文单词组成,自动将每个单词的首字母转换成大写。9•语句书写自由在同一行上可以书写多条语句,语句间用:(西文冒号)分隔。单行语句可分若干行书写,在本行后加入续行符空格和下划线“_”。一行允许多达255个字符。例如:X=10:Y=20:Z=30DimNameAsString,AgeAsInteger,SexAs_Boolean,IDAsString10注释有利于程序的维护和调试,方法有:Rem注释必须单独一行书写‘注释可单独一行,也可在语句后书写在工具栏上右击,在快捷菜单中选择“编辑”菜单,其中有“设置注释块”、“解除注释块”两个按钮。注释PrivateSubCmdOK_Click()Rem2003年1月编写如下代码‘若用户单击了确认按钮,则执行下列代码…………EndSub114.3.1数据类型(1)•整数–整数是不带小数点和指数符号的数,在机器内以二进制补码形式表示。–整型(Integer):整型以两个字节的二进制码表示和参加运算,取值范围为-32768~32767。–长整型(Long):长整型以四个字节的二进制码表示和参加运算,取值范围为-2147483648~2147483647。124.3.1数据类型(2)•浮点数–浮点数也称实型数或实数,是带有小数部分的数值。它由三部分组成:符号、指数和尾数。–单精度型(Single):以4个字节存储,符号1位,指数8位,尾数23位,1位隐含位。用E来表示指数。例如:-9.654E-6–双精度型(Double):以8个字节存储,符号1位,指数11位,尾数52位,1位隐含位。用D来表示指数。例如:-8.573264907D-15134.3.1数据类型(3)•字节型(Byte)–字节实际上是一种数值类型,以一个字节的无符号二进制数存储,取值范围为0~255。•布尔型(Boolean)–布尔型是一个逻辑值,用两个字节存储,它只有两种值,即True(真)或False(假)。•对象型(Object)–对象型数据用来表示图形或OLE对象或其他对象,用4个字节存储。144.3.1数据类型(4)•字符串型(String)–字符串是一个字符序列,由ASCII字符组成,包括标准的ASCII字符和扩展ASCII字符及汉字等。–字符串是放在双引号内的若干个字符,长度为0的字符串称为空字符串。–VB中的字符串分为两种,即变长字符串和定长字符串。变长字符串的长度是不确定的,最大长度不超过231;定长字符串的长度是固定的,最大长度不超过216。154.3.1数据类型(5)•货币型(Currency)–货币数据类型是为表示钱款而设置的。该类型数据以8个字节存储,精确到小数点后四位,小数点前有15位,小数点后4位以后的数字将被舍去。–浮点数中的小数点是“浮动”的,而货币类型数据的小数点是固定的。•变体型(Variant)–变体数据类型是一种可变的数据类型,可以表示任何值,包括数值、字符串及日期等。164.3.1数据类型(6)•日期型(Date)–日期型数据用来表示日期信息,格式为mm/dd/yyyy或mm-dd-yyyy。–表示范围:1000年1月1日到9999年12月31日。–任何可辨认的文本日期都可以赋值给日期变量。日期文字必须用符号#括起来,如#3/18/2003##12:30:45#17不同数据类型占用空间比较112123412345678ByteIntegerBooleanLongSingleObjectDoubleDateCurrency字节18•常量——在程序中取值始终保持不变的数据,可以是具体的数值,也可以是专门说明的符号。(10、PI)•变量——以符号形式出现在程序中,且取值可以发生变化的数据。常量和变量194.3.2常量(1)•数值常量•整型和长整型均有三种表示方式,即十进制,十六进制和八进制。•十进制:0~9,正负号组成。•八进制:0~7,正负号组成。表示时在前面加上&O。如:&O37相当于十进制数3*8+7=31•十六进制:0~9,A~F,正负号组成。表示时在前面加上&H。如:&H3D相当于十进制数3*16+13=61•浮点型由尾数、指数符号和指数组成。如:单精度:-9.654E-6双精度:3.1415926D820•字符串常量:不能超过65535个字符。如“Hello”、“1234.343”、“苏州”•逻辑型常量:只有两个(True、False)•日期型常量:#2/25/2003#4.3.2常量(2)21•符号常量[Public|Private]Const常量名[AsType]=数值Public表示常量可在整个工程中使用Private表示常量只在声明的窗体模块或标准模块中使用Type表示常量的类型如:ConstTaxAsSingle=1.05ConstPi=3.1415926PublicConstNumAsInteger=454.3.2常量(3)22窗体模块Consta1=3.1415926仅在本窗体模块中有效PrivateConstb1=4仅在本窗体模块中有效PublicConstc1=5出错,不能出现在窗体模块中PrivateSubCommand1_Click()Constd1=3该常量仅在本事件过程中有效PrivateConste1=4出错,不能在过程中使用PublicConstf1=5出错,只能出现在标准模块中EndSub23Consta2=3该常量在本标准模块中有效PrivateConstb2=4该常量在本标准模块中有效PublicConstc2=5该常量在整个工程中有效Public/PrivateSubFun()Constd3=3该常量仅在本通用过程中有效PrivateConste3=4出错PublicConstf3=5出错EndSub标准模块24类型说明符说明符示例含义%X%Integer&X&Long!X!Single#X#Double@X@Currency$X$String字节、布尔、日期、对象及变体型没有类型说明符。声明常量和变量时也可以使用类型说明符。ConstOne%=1等价于ConstOneAsInteger=1254.3.3变量•变量是内存单元的映射,变量名即为内存单元地址的映射。•一个有名称的内存位置叫变量。•变量的三要素:–变量名–变量类型–变量的值26变量名的命名规则•变量名只能由字母、数字、汉字和下划线组成•必须以字母开头,大小写等价•长度不超过255•作用域内唯一•不能和VB保留字重名•不能含有标点符号,类型说明符只能出现在名称的最后27定义变量•显式定义–Dim变量名As类型[,变量名As类型]–Public变量名As类型[,变量名As类型]–Private变量名As类型[,变量名As类型]–Static变量名As类型[,变量名As类型]•隐式定义–将类型说明符放在变量名最后例如:Country$=“China”,k%=1等价于DimCountryAsString,kAsIntegerCountry=“China”:k=1•如果变量未被显式或隐式定义则为变体型。注意:Dima,bAsInteger,则b为整型,而a则为变体型。28变量作用域•过程级变量:又称局部变量。在过程中说明,仅在说明它的过程中有效。•窗体模块级、标准模块级变量:在窗体模块或标准模块的通用声明中说明,在该窗体模块或标准模块的所有过程内有效。•全局变量:又称公有变量。在窗体模块或标准模块的通用声明中说明,在工程内有效。•使用Dim语句声明变量时,系统自动给该变量赋一个初值。若为数值型,则值为0;若为字符串型,则值为空串;若为布尔型,则值为False。29Dima1AsInteger窗体级变量,在该窗体内有效Publicb1AsInteger全局变量,在工程内有效Privatec1AsInteger窗体级变量,在该窗体内有效Staticd1AsInteger出错PublicS1AsStringPrivateS2AsStringPublicS3AsString*5出错PrivateS4AsString*5PrivateSubCommand1_Click()Dime1AsInteger过程级变量,只在该事件过程内有效Publicf1AsInteger出错Privateg1AsInteger出错Statich1AsInteger静态变量,只在该事件过程内有EndSub窗体模块30Dima2AsInteger模块级变量,在该模块内有效Publicb2AsInteger全局变量,在工程内有效Privatec2AsInteger模块级变量,在该模块内有效Staticd2AsInteger出错PublicS1AsStringPrivateS2AsStringPublicS3AsString*5PrivateS4AsString*5Public/PrivateSubFun()Dime2AsInteger过程级变量,只在该通用过程内有效Publicf2AsInteger出错Privateg2AsInteger出错Statich2AsInteger静态变量,只在该通用过程内有效EndSub标准模块31定长字符串的定义•系统默认的字符串是变长的。•定长字符串的定义方法为:Dim变量名AsString*size•如果在给定长字符串变量赋值时,字符数未达到定义的长度,则用空格填补;如果字符数超过定义的长度,则多余的部分将会被自动截去。•在标准模块中定长字符串可说明为Public或Private;在窗体模块中只能说明为Private。32OptionExlicit语句•变量可以不用定义就可使用。•没有定义的变量默认为局部变量。•为了安全起见,最好能显式地定义程序中所使用到的变量。•OptionExplicit语句的作用是防止未显式定义的变量直接使用。•OptionExplicit语句写在(通用)--(声明)下。•可以通过“工具”菜单中的“选项”进行设置334.4运算符和表达式•算术运算符^(乘方)-(负号)*(乘)/(除)\(整除)Mod(取余)+(加)-(减)Mod运算中,结果与被除数同号。•字符运算符+、&:连接——最好用&。•关系运算符=、、、=、、=、Is表达式由运算对象、运算符组成,有返回值。344.4运算符和表达式•逻