1、VB语言基础语言基础一、数据类型一、数据类型1、数值型: 取值范围:Byte(字节型)占1字节; 0255无符号Integer(整型)占2字节; -3276832767long(长整型)占4字节; -21474836482147483647single(单精度浮点)占4字节; 略Double(双精度浮点)占4字节; 略Currency(货币型)占8字节 小数点左15位,右4位(精确定点数据类型)2、逻辑型:Boolean(布尔型)占2字节; true或false3、字符串型:String定长型占字符串长度,变长型再加104、日期型:Date(日期型)占8字节 100-1-19999-12-31
2、5、对象型:Object占4字节; 任何Object引用6、变体型:Variant变体型数字占16字节,变体型字符占22字节字符串长注:此类型还包含三种特定值:Empty;Null;Error; 7、用户定义的数据类型: 用户可以利用Type语句定义自己的数据类型。格式如下 Type 数据类型名 数据类型元素名 As 类型名 End Type 用Type可定义类似于C 语言中的结构体类型。例如: Type Date_Rec RYear As Integer RMonth As String*3 RDay As Integer End Type 注:记录类型中的元素可以是字符串,但必须是定长字符
3、串,其长度由类型名加上一个星号和常数指明。 数据类型转换函数: 函数名及书写格式 转换结果 CBool(表达式) 布尔型 CCur(表达式) 货币型 CByte(表达式) 字节型 CDate(表达式) 日期型 CDbl(表达式) 双精度 CSng(表达式) 单精度 CInt(表达式) 整型 CLng(表达式) 长整型 CStr(表达式) 字符串 Cvar(表达式) 变体型 二变量 1 变量名 V中变量的命名遵从标识符命名原则:必须以字母开头;变量中间不能有空格;不能使用VB关键字; 2 变量的声明 VB允许使用不声明的变量,即一个变量未经声明就可以在程序中使用。这种变量使用方式称为隐含变量声明
4、。(使用隐含变量时,VB 会自动创建变量,并赋予它变体类型。在为其指定值之前,其值为Empty,当为它赋值后,会采用所赋值的类型作为自己的类型。) 显式声明: 用 类型说明符:将类型说明符加在变量名的尾部; 定 义变量时指定其类型: 格式:Declare 变量名 As 类型名 其中的Declare 可以是 Dim ,Static, Redim, Public中之一 用 Def type语句:Def type 字母范围 这里的Type是类型标志,Def是系统保留字,它们之间没有空格。例如:DefInt D-J 该定义声明了D、E 、F、G、H、I、J都是整型变量,而且以这些字母开头的变量名也都是
5、整型变量。 类型说明符: :整型; & :长整型; !:单精度浮点型; # :双精度浮点型; :货币型; $ :字符串型; 字节、布尔、日期、对象及变体型没有类型说明符。 注意: Dim a,b,c As Integer是错误的。只有c被声明成Integer,而 a,b缺省为Variant 类型。 如果使用Dim x As Integer语句声明了变量x为Integer,而在后面又使用带有类型说明符的该变量,如x$,x!,x和x#,程序运行时就会产生“duplicate definition”错误。 使用不带As的Dim语句,会被声明成变体类型的变量。 通过不带长度说明的字符串声明语句可以声明
6、变长字符串。 对于声明布尔型的变量,其缺省值为False ; 为声明为Date 类型的变量赋值时,日期值应放在一对#之间,且多种日期和时间格式在VB中都是有效的。 3 变量的作用域和生存期: 变量的作用域 指变量的有效作用范围,也就是变量可以被访问的范围。按以下三种方式来定义变量的作用范围: 范 围 说 明 过程 在过程内使用Dim或Static 私有 在模块开头加上Dim或Private 公共 在模块开头加上Public 变量的生存期 指VB 保存该变 量值的时间,是变量在整个程序运行过程中的有效生存时间1)过程层变量 过程层变量是指在过程或函数内部定义的变量,这种变量无论是用Dim还是St
7、atic声明,其作用域都只是该过程或函数体,在过程或函数外不能引用 ;2)窗体层变量 窗体层变量是指在窗体的通用部分声明的变量,即不是在任何一个窗体内的过程或函数中声明的变量。它的作用范围至少是窗体的存在范围,也就是说在窗体内的每个过程或函数中都可以使用窗体层变量。 窗体层变量的声明有三种方式: 用Dim语句声明。 用Private语句声明。 用Public语句声明。 对于用Dim和Private声明的窗体层变量,其作用范围都是在所声明的窗体范围内。用Public声明的窗体层变量作为窗体公用数据成员,可以在其他窗体或模块中以“窗体名.变量”方式引用。其作用可以大于当前窗体范围。窗体层变量在本窗
8、体所有过程中都是可见的。 3) 模块层变量 模块(Module)是构成VB工程(Project)的一部分,是包含数据和过程的集合。定义模块层变量只需在模块的通用部分加入Dim,Private,Global或Public 等声明语句即可。用Dim和Private声明的模块层变量作用域为所在模块范围,而用Public和Global 定义的模 块层变量则可以全局使用。 注:全局变量必须用Public或Global 声明,不能用 Dim 三 常量 常量是一个有意义的名字,用来表示程序运行时不变的数值和字符串。 Visual Basic中的常量分为文字常量和符号常量两种,文字常量又可分为数字常量和字符串
9、常量。 符号常量(自定义常量):在程序中程序员用Const声明的常量。 使用常量时应注意: (1) 用Const 声明的常量在程序运行过程中是不能被重新赋值的。 (2) 在常量声明的同时赋值。 (3) 可以为声明的常量指定数据类型,如Const conVal As Currency=3.78,缺省时为所赋值的类型。 (4) 在用常量为常量初始化时注意,不可有循环引用。例如: 模块1中 : Public const con1=con2+8 模块2中 : Public Const con2= con1*3 四 数组 1 数组的定义: 必须用Global或Dim语句定义。Dim 语句的语法格式如下:
10、 Dim 数组名(lower To upper,lower To upper)As type 在这里,每对lower和upper为数组的一维,lower 是该维下标的下限,upper 是该维 下标的上限,如不标明lower,其默认值为 0。Upper不可省略。 例如: (1) 一维数组的定义: Dim Record (5) As Integer 定义了一个有六个数据元素的整型数组 (2) 二维数组的定义 Dim Matrix(2,3) As Integer 该数组定义了一个二维数组,可以存储12个整型数,三行四列下标:00,01,02,03,10,23 2 动态数组 带有空()的Dim 可以声
11、明一个 动态数组,如: Dim dynArray( ) 然后,可用ReDim 语句在一个过程或函数中定义动态数组的维数和元素个数。申请或重申请存储空间的一般格式为: ReDim Preserve 数组名 (lower TO upper ,lower To upper) As Type 其中,Preserve 为可选项,表示是否保护己有数据。缺省时为不保护。 例如: ReDim dynArray(10) /为动态数组申请10个单元 ReDim Preserve myArray (Ubound(myArray)+10) 其中,Ubound 函数返回数 组的指定维的上限。 这是一个保留原数据的增量分
12、配数组 五、枚举类型: 当一个变量只有几种可能的值时,可将这个变量定义为枚举类型。 枚举类型的声明放在窗体模块、标准模块或公用类模块中的声明部分,用Enum语句来定义,格式如下: Public|Private Enum 类型名称 成员名常数表达式 成员名常数表达式 End Enum 默认情况下,枚举类型中的第一个常数被初始化为0,其后的常数逐项递增1。 例如: Enum Days Saturday Sunday Monday Tuesday Wednesday Thursday Friday End Enum 例如在如上定义的Days枚举类型的基础上,有如下单击某按钮的过程: Private
13、Sub Command1_Click() Dim MyDay As Days MyDay = Saturday If MyDay 或 (大于);=(大于等于);like(比较样式);Is(比较对象 变量) 4 逻辑运算符: 逻辑运算用于判断操作数之间的逻辑关系。VB提供了非(Not) 、与(And)、或 (Or)、异或(Xor)、相等(Eqv)和隐含(Imp)逻辑运算。逻辑运算符的优先级低于数学运算符和关系运算符。逻辑运算符本身也有优先级,其顺序为Not,And,Or,Xor, Eqv,Imp。 5、表达式的执行顺序: 1)函数运算; 2)算术运算; 3)关系运算;(优先级:, ,=) 4)逻
14、辑运算; 注:乘除法同时出现时,遵循从左到右顺序;括号的运算总是优先;字符串连接(&)不是算术运算符,但其优先顺序在所以算术运算符之后,又优先于其他运算符 七、输入与输出: InputBox函数 :InputBox函数可以产生一个对话框,用于将用户从键盘输入的数据作为函数的返回值返回到当前程序中。 返回数值型数据。格式如下: InputBox(prompt ,title,defualt,xpos,ypos,helpfile,context) 返回字符串型数据。格式如下: InputBox$(prompt ,title,defualt,xpos,ypos,helpfile,context) 其中
15、的参数含义为: prompt:一个字符串,显示出现在对话框中的用来提示用户的信息,最大长度为1024个字符。 Title:一个字符串,显示出现在对话框的顶部的标题信息。 default:一个字符串,用于显示输入缓冲区的默认信息,即用户在执行了InputBox函数后如果没有输入任何信息,则可用此字符串作为默认的输入值。 xpos:整数值,用于表示对话框与屏幕左边界的距离。 ypos:整数值,用于表示对话框与屏幕上边界的距离。 Helpfile:字符串型变量或字符串表达式,用于表示要用的帮助文件的名字。 context:整数型 变量或表达式,用于表示相关帮助主题的目录号。 Print方法用于输出显
16、示。它既可以用于窗体,也可以用于其他控件上;它可以在窗体上显示文本字符串和表达式的值,也可以在其他图形对象或打印机上输出信息。格式: 对象名称。Print表达式表, |; 对象名称是一个可选项,可以是窗体、图片框或打印机,如果省略,则在当前窗体上直接输出; 表达式表是一个或多个字符串或数值表达式 ,用以原样输出字符串或表达式的值。也是可选项。如果省略,则输出一个空行; 当需要输出多个字符串或表达式值时,各表达式间用逗号、分号或空格分隔,其中逗号分隔为标准输出格式,14个字符位为一个输出区段单位,逗号后面的表达式在下一区段输出,分号和空格分隔,则是按照紧凑格式输出; Print方法兼有输出和计算双重作用,即可以先计算表达式的值后输出;