VB基础知识点选编
一、VB概述
1、VB中基本概念
类: 对象: 方法: 事件: 属性: 事件过程:
理解概念
2、VB的版本:
学习版: 专业版: 企业版:
3、VB的三种模式
(1)设计模式
在设计模式下可以进行程序的界面设计、属性设置、代码编写等,标题栏上显示“设计”,在此模式下不能运行程序,也不能使用调试工具。
(2)运行模式
执行“运行”菜单中的“启动”命令或单击工具栏上的启动按钮或按F5键,即由设计模式进入运行模式,标题栏显示“运行”,在此阶段可以查看程序代码,但不能修改。若要修改,必须单击工具栏上的“结束”按钮,回到设计模式,也可以选择“中断”按钮,进入中断模式。
(3)中断模式
当程序运行时单击了“中断”按钮,或当程序出现运行错误时,都可以进入中断模式,在此模式下,运行的程序被挂起,可以查看代码、修改代码、检查数据。修改结束,单击“继续”按钮可以继续程序的运行,也可以单击“结束”按钮停止程序的执行。
4、VB编码规则
(1)语言元素
VB程序的语言元素主要由:
关键字(如: Dim、Print、Cls)
函数(如:Sin()、Cos()Sqr())
表达式(如:Abs(-23.5)+45*20/3 )
语句(如:X=X+5 、 IF……ELSE……END IF)等组成。
(2)VB代码书写规则
1) 程序中不区分字母的大小写,Ab 与AB等效;
2) 系统对用户程序代码进行自动转换:
a)对于VB中的关键字,首字母被转换成大写,其余转换成小写
b)若关键字由多个英文单词组成,则将每个单词的首字母转换成大写
c)对于用户定义的变量、过程名,以第一次定义的为准,以后输入的自动转换成首次定义的形式
3)语句书写规则
a)在同一行上可以书写多行语句,语句间用冒号(:)分隔
b)单行语句可以分多行书写,在本行后加续行符:空格和下划线 _
c) 一行允许多达255个字符
4)程序的注释方式
a)整行注释一般以 Rem开头,也可以用撇号 ';
b)用撇号 ' 引导的注释,既可以是整行的,也可以直接放在语句的后面,最方便;
c)可以利用“编辑”工具栏的“设置注释块”、“解除注释块”来将设置多行注释。
5、VB文件类型:vbp工程文件 ;frm窗体文件 ;frx保存图片的文件 ;bas模块文件 ;
res资源文件 ;cls类模块文件 ;dsr设计器文件 ;
二、 VB的语言基础
1.数据类型
VB的标准数据类型
数据类型 | 关键字 | 类型符 | 前缀 | 存储空间 | 范围 | |
数值数据类型 | 字节型 | Byte |
| Byt | 1 个字节 | 0 到 255 |
整型 | Integer | % | Int | 2 个字节 | -32,768 到 32,767 | |
长整型 | Long | & | Lng | 4 个字节 | -2,147,483,648 到 2,147,483,647 | |
单精度型 | Single | ! | Sng | 4 个字节 | 负数:-3.402823E38 到 -1.401298E-45;正数:1.401298E-45 到 3.402823E38 | |
双精度型 | Double | # | Dbl | 8 个字节 | ||
货币型 | Currency | @ | Cur | 8 个字节 | ||
逻辑型 | Boolean |
| Bln | 2 个字节 | True 或 False | |
日期型 | Date |
| Dtm | 8 个字节 | 100 年1月 1日 到 9999 年 12 月 31 日 | |
字符型 | String | $ | Str | 字符串长度 | 1 到大约 65,400 |
注意:
1)VB中对没有声明的变量其缺省的数据类型是变体型,可以用来存储各种数据,但所占用的内存比其它类型都多。为提高运行效率(整型效率较高),或达到一定的运算精确度(浮点型精度较高,但运行较慢),应合理的定义数据类型。
2)逻辑型数据只有True 和False两个值,转换成整型时,True=-1 ,False=0,将其它类型转换成逻辑型时,非0数转换为True ,0转换为False。
3)字符型可以包括所有的西文字符和汉字,字符必须用双引号括" "起来, 如:"abc123"
4)日期型数据按8字节的浮点数来存储,日期型数表示方式有两种:可以用号码符#括起来。
如:#3/22/2002# #2002-3-22 14:30:20#
5)任何数据类型的数组都需要 20 个字节的内存空间,加上每一数组维数占 4 个字节,再加上数据本身所占用的空间。数据所占用的内存空间可以用数据元数目乘上每个元素的大小加以计算。例如,以 4 个 2 字节之 Integer 数据元所组成的一维数组中的数据,占 8 个字节。这 8 个字节加上额外的 24 个字节,使得这个数组所需总内存空间为 32 个字节。
2、VB语言基础函数InputBox函数与MsgBox函数
1.InputBox函数与MsgBox函数
(1)InputBox函数
语法:x = InputBox (提示, 标题, 默认值, x坐标, y坐标, 帮助文件, 内容)
其中,提示是提示的字符串,这个参数是必须的。标题是对话框的标题,是可选的。默认值是文本框里的缺省值,也是可选的。X坐标与y坐标决定输入框的位置。帮助文件, 内容用于显示与该框相关的帮助屏幕。返回值x将是用户在文本框里输入的数据,x是一个字符串类型的值。如果用户按了Cancel钮,则 x 将为空字符串。
(2)MsgBox函数
语法:Action = MsgBox (msg, type, title)
数值 | 符号常量 | 意义 |
0 | vbOKOnly | 只显示 Ok 按钮 |
1 | vbOKCanc el | 显示 Ok Cancel 按钮 |
2 | vbAbortRetryIgnore | 显示 Abort Retry Ignore 按钮 |
3 | vbYesNoCancel | 显示 Yes No Cancel 按钮 |
4 | vbYesNo | 显示 Yes No 按钮 |
5 | vbRetryCancel | 显示 Retry Cancel 按钮 |
16 | vbCritical | Stop Sign对极其重要的问题提醒用户 |
32 | vbQuestion | Question Mark增亮没有危险的问题 |
48 | vbExclamation | Exclamation Mark强调警告用户必须知道的事情 |
64 | vbInformation | Information Mark可以使乏味的信息变得有趣 |
0 | vbDefaultButton1 | 第一个按钮缺省 |
256 | vbDefaultButton2 | 第二个按钮缺省 |
512 | vbDefaultButton3 | 第三个按钮缺省 |
Action的值
返回值 | 含义 | 返回值 | 含义 |
1 | 选择 Ok 按钮 | 5 | 选择 Ignore 按钮 |
2 | 选择 Cancel 按钮 | 6 | 选择 Yes 按钮 |
3 | 选择 Abort 按钮 | 7 | 选择 No 按钮 |
4 | 选择 Retry 按钮 |
|
|
3、常用的日期与时间函数
函数名 | 含义 | 示例 | 结果 | |
Date () | 返回系统日期 | Date () | 02-3-19 | |
Time() | 返回系统时间 | Time() | 3:30 :00 PM | |
Now | 返回系统时间和日期 | Now | 02-3-19 3:30 :00 | |
Month(C) | 返回月份代号(1-12) | Month("02,03,19") | 3 | |
Year(C) | 返回年代号(1752-2078) | Year("02-03-19") | 2002 | |
Day(C) | 返回日期代号(1-31) | Day("02,03,19") | 19 |
4. 转换函数
函数名 | 功能 | 示例 | 结果 |
Str (x) | 将数值数据x转换成字符串 | Str (45.2) | "45.2" |
Val(x) | 将字符串x中的数字转换成数值 | Val("23ab") | 23 |
Chr(x) | 返回以x为ASCII码的字符 | Chr(65) | "A" |
Asc(x) | 给出字符x的ASCII码值,十进制数 | Asc("a") | 97 |
Int(x) | 取小于等于x的最大整数 | Int(-3.5) Int(3.5) | -4 3 |
Fix(x) | 将数值型数据x的小数部分舍去 | Fix(-3.5) | - 3 |
5. 字符函数
(1)字符串编码
一个汉字在计算机内存中占2个字节,一个西文字符(ASCII码)占1个字节
(2)常用的字符串函数
函数名 | 功能 | 示例 | 结果 | |
Len(x) | 求x字符串的字符长度(个数) | Len("ab技术") | 4 | |
LenB(x) | 求x字符串的字节个数 | LenB("ab技术") | 8 | |
Left(x,n) | 从x字符串左边取n个字符 | Left("ABsYt",2) | "AB" | |
Right(x,n) | 从x字符串右边取n个字符 | Right("ABsYt",2) | "Yt" | |
Mid(x,n1,n2) | 从x字符串左边第n1个位置开始向右取n2个字符 | Mid("ABsYt",2,3) | "BsY" | |
Ucase(x) | 将x字符串中所有小写字母改为大写 | Ucase("ABsYug") | ABSYUG | |
Lcase(x) | 将x字符串中所有大写字母改为小写 | Ucase("ABsYug") | absyug | |
Ltrim(x) | 去掉x左边的空格 | Lrim(" ABC ") | "ABC " | |
Rtrim(x) | 去掉x右边的空格 | Trim(" ABC ") | " ABC" | |
Trim(x) | 去掉x两边的空格 | Trim(" ABC ") | "ABC" | |
Instr(x,"字符", M) | 在x中查找给定的字符,返回该字符在x中的位置,M=1不区分大小写,省略则区分 | Instr("WBAC","B") | 2 | |
String(n,"字符") | 得到由n个首字符组成的一个字符串 | String(3,"abcd") | "aaa" | |
Space (n) | 得到n个空格 | Space (3) | "□□□" |
6、 数学函数
VB中常用的数学函数
函数名 | 功能 | 示例 | 结果 |
Sqr(x) | 求平方根 | Sqr(9) | 3 |
Log(x) | 求自然对数,x>0 | Log(10) | 2.3 |
Rnd(x) | 产生一个在(0,1)区间均匀分布的随机数,每次的值都不同;若x=0,则给出的是上一次本函数产生的随机数 | Rnd(x) | 0-1之间的数 |
Sin(x) | 求x的正弦值,x的单位是弧度 | Sin(0) | 0 |
Cos(x) | 求x的余弦值,x的单位是弧度 | Cos(1) | 0.54 |
Tan(x) | 求x的正切值,x的单位是弧度 | Tan(1) | 1.56 |
Atn(x) | 求x的反正切值,x的单位是弧度,函数返回的是弧度值 | Atn(1) | 0.79 |
7.表达式
(1)表达式的组成
表达式由常量、变量、运算符、函数和圆括号按一定的规则组成,通过运算后有一个结果,运算结果的类型由数据和运算符共同决定。
(2)表达式的书写规则
1)乘号不能省略
2)括号必须成对出现,均使用圆括号,可以嵌套,但必须配对。
3)表达式从左到右在同一基准上书写,无高低、大小之分。
例:sqr((3*x+y)-z)/(x*y)^4
(3)不同数据类型的转换
操作数的数据类型应该符合要求,不同的数据应该转换成同一类型。在算术运算中,如果操作数的数据精度不同,VB规定运算结果采用精度较高的数据类型。
(4)优先级
同一表达式中,不同运算符的优先级是:算术运算符 > 字符运算符 > 关系运算符 > 逻辑运算符
注意:对于存在多种运算符的表达式,可增加圆括号改变优先级或使表达式更清晰。
三、VB语言基础关系运算符\逻辑运算符
关系运算符
运算符 | 含义 | 示例 | 结果 |
= | 等于 | "ABCDE"="ABR" | False |
> | 大于 | "ABCDE">"ABR" | False |
>= | 大于等于 | "bc">="大小" | False |
< | 小于 | 23<3 | False |
<= | 小于等于 | "23"<="3" | True |
<> | 不等于 | "abc"<>"ABC" | True |
Like | 字符串匹配 | "ABCDEFG" Like "*DE*" | True |
Is | 对象引用比较 |
|
|
注意:
1)如果两个操作数都是数值型,则按其大小比较
2)如果两个操作数都是字符型,则按字符的ASCII码值从左到右一一比较
3)汉字字符大于西文字符
4)关系运算符的优先级相同
5)VB6.0中Like运算符与通配符的使用:
?——表示任何单一字符
*——表示0个或多个字符
#——表示任何一个数字(0 - 9)
[字符列表]——表示字符列表中的任何单一字符
[!字符列表]—— 表示不在字符列表中的任何单一字符
(4) 逻辑运算符
运算符 | 含义 | 优先级 | 说明 | 示例 | 结果 | ||||||
Not | 取反 | 1 | 当操作数为假时,结果为真 | Not F Not T | T F | ||||||
And | 与 | 2 | 两个操作数均为真时,结果才为真 | T And T F And F T And F F And T | T F F F | ||||||
Or | 或 | 3 | 两个操作数中有一个为真时,结果为真 | T Or T F Or F T Or F F Or T | T F T T | ||||||
Xor | 异或 | 3 | 两个操作数不相同,结果才为真,否则为假 | T Xor F T Xor T | T F | ||||||
Eqv | 等价 | 4 | 两个操作数相同时,结果才为真 | T Eqv F T Eqv T | F T | ||||||
Imp | 蕴含 | 5 | 第一个操作数为真,第二个操作数为假时,结果才为假,其余都为真 | T Imp F T Imp T | F T |
说明:
1)若有多个条件时,And必须全部条件为真才为真;Or只要有一个条件为真就为真。
2)如果逻辑运算符对数值进行运算,则以数字的二进制值逐位进行逻辑运算。And运算常用于屏蔽某些位;Or运算常用于把某些位置1。
如:12 And 7 表示对1100与0111进行And运算,得到二进制值100,结果为十进制4。
3)对一个数连续进行两次Xor操作,可恢复原值。在动画设计中,用Xor可恢复原来的背景。
四、常量与运算符
1、常量
1)直接常量
指在程序中直接给出值的数据,如:123、123&、123.45、1.234E2 、123D3分别表示整型、长整型、单精度浮点型(小数形式)、单精度浮点型(指数形式)、双精度浮点型。
八进制常数: 在数值前加&O ,如 &O123
十六进制常数:在数值前加&H ,如&H123
2)用户声明的符号常量
用Const来声明: Const 符号常量名 [As 类型] = 表达式
如:Const PI=3.14159 '声明了常量PI,代表3.14159,单精度型
Const MAX As Integer=&O144 '声明了常量MAX,代表八进制数144,整型
Const COUNT#=45.67 '声明了常量COUNT,代表45.67,双精度型
3)系统提供的常量
系统定义的常量位于对象库中,在对象浏览器中的Visual Basic(VB)和Visual Basic for Aplication(VBA)等对象库中列出了VB的常量。这些常量可以与应用程序的对象、方法、属性一起使用。
如:Form1.WindowsState=vbMaximized 表示将窗口极大化。
2. 运算符
(1)算术运算符
运算符 | 含义 | 优先级 | 示例 | 结果 | ||||||
^ | 乘方 | 1 | Ia^2 | 9 | ||||||
- | 负号 | 2 | -iA | -3 | ||||||
* | 乘 | 3 | IA* iA* iA | 27 | ||||||
/ | 除 | 3 | 10/iA | 3.33333333333333 | ||||||
\ | 整除 | 4 | 10\iA | 3 | ||||||
Mod | 取模 | 5 | 10 Mod iA | 1 | ||||||
+ | 加 | 6 | 10+iA | 13 | ||||||
- | 减 | 6 | IA-10 | -7 |
说明:设表中的变量iA=3, 为整型。
算术运算符两边的操作数应该是数值型,若是数字字符或逻辑型,则自动转换为数值类型后再运算。
(2)字符串运算符
运算符 | 作用 | 区别 | 示例 | 结果 |
& | 将两个字符串拼接起来 | 连接符两旁的操作数不管是字符型还是数值型,系统先将操作数转换成字符,然后再连接。 | "123"&55 "abc"+12 | "12355" "abc12" |
+ | 连接符两旁的操作数均为字符型;若均为数值型则进行算术加法运算;若一个为数字字符型,一个数值型,则自动将数字字符转换为数值,然后进行算术加;若一个为非数字字符型,一个数值型,则出错。 | "123"+55 "abc"+12 | 178 出错 |
五、变量与常量
1变量或常量的命名规则
1) 必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度≤255个字符;
2) 不能使用VB中的关键字,并尽量不与VB中标准函数名同名;如:Dim 、Sin
3)VB中不区分变量的大小写,一般变量首字母用大写,其余用小写;常量全部用大写字母表示
4)为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。
2变量声明
1)用Dim语句进行显式声明
语句形式: Dim 变量名 [As 类型]
如: Dim intX As integer
说明·如果没有As 类型,则默认为变体类型。
·可在变量名后加类型符来代替As 类型 如: Dim intX%
·一条语句可以同时定义多个变量,但每个变量必须有自己的类型声明,类型声明不能共用;
·字符串变量根据其存放的长度是否固定,定义方法不同:
定长字符串: Dim strA As String*10 //表示最多存放10个字符,如果赋值不足10个,则右补空;若多于10个,则多余部分截去。
不定长字符串:Dim strA As String //最多可存放2MB个字符
2) 隐式声明
VB中允许变量不经过声明就直接使用,这种称为隐式声明,所有隐式声明的变量都是变体型的。
隐式声明容易造成错误,为了调试程序方便,一般对使用的变量都进行声明,可以在通用声明段使用Option Explicit 语句来强制显式声明所有变量。
六、VB程序的控制结构
1. 条件函数
(1)if函数
函数形式: Iif(表达式,当条件为True时的值,当条件为False时的值
例:求X、Y中大的数,并放入变量Tmax中: Tmax=Iif(X>Y, X, Y)
(2)If……Then……ElseIf语句(多分支结构)
语句形式:
If <表达式1> Then
<语句块1>
ElseIf <表达式2> Then
<语句块2>
……
[ Else 语句块 n+1 ]
End If
注意 :
1)不管有几个分支,程序执行了一个分支后,其余分支不再执行;
2)ElseIf 不能写成Else If
3)当多分支中有多个表达式同时满足,则只执行第一个与之匹配的语句块
例:已知变量strC中存放了一个字符,判断该字符是字母字符、数字字符还是其他字符。
(3)If语句的嵌套
If语句的嵌套是指if 或else后面的语句块中又包含If语句。语句形式:
If <表达式1> Then
If <表达式11> Then
……
End If
……
End If
注意:
1)对于嵌套结构,为了增强程序的可读性,应该采用缩进形式书写;
2)If语句形式若不在一行上书写,必须与End If配对,多个if嵌套,End If与它最接近的Emd If配对。
2. Select Case语句(情况语句) 是多分支语句的又一种形式,语句形式:
Select Case 变量或表达式
Case 表达式列表1
语句块1
Case 表达式列表2
语句块2
……
[Case Else
语句块n+1]
End Select
说明:
1)变量或表达式可以是数值型或字符串表达式
2)表达式列表I 可以是表达式、一组用逗号分隔的枚举值、表达式1 to 表达式2、Is关系运算符表达式;如:case 1 to 10、case "a","w","e","t"、case 2,4,6,8,is>10
3)并不是所有的多分支结构都可以用情况语句代替的。
3. For循环语句(知道循环次数的计数型循环)
语句形式: For 循环变量 = 初值To 终值 [ Step 步长]
语句块
[Exit For]
语句块
Next 循环变量
说明:1) 循环变量必须为数值型
2)步长一般为正,初值小于终值;若为负,初值大于终值;缺省步长为1;
3)语句块可以是一句或多句语句,称为循环体;
4)Exit For 表示当遇到该语句时,退出循环体;
执行Next的下一句;
循环次数=int((终值 - 初值)/步长+1)
5)退出循环后,循环变量的值保持退出时的值;
6)在循环体内对循环变量可多次引用,但不要对其赋值,否则影响结果。
3. Do……Loop循环(不知道循环次数的条件型循环)
是用于控制循环次数未知的循环结构,语法形式有两种:
形式1:Do While …… Loop
Do [ While | Until 条件 ]
语句块
[ Exit Do ]
语句块
Loop
形式2:Do …… Loop While
Do
语句块
[ Exit Do ]
语句块
Loop [ While | Until 条件 ]
说明:
1)形式1为先判断后执行,有可能一次也不执行;
2)形式2为先执行后判断,至少执行一次;
3)关键字While 用于指明条件为真时就执行循环体中的语句,Until刚好相反;
4)当省略了While|Until 条件字句,即循环结构仅由 Do……Loop关键字构成时,表示无条件循环,这时循环体内应该有Exit Do语句,否则为死循环;
5)Exit Do 语句表示当遇到该语句时,退出循环,执行Loop的下一语句。
4. 循环的嵌套
指在循环体内又包含了一个完整的循环结构。循环嵌套对For 循环和Do……Loop循环均适用。
七、VB中的一维数组
1.数组
数组由多个同类型的元素组成,用同一个名字,不同下标,标识数组中不同元素.
数组中的每个变量称为数组元素.
只有一个下标的数组称一维数组,表示方法:数组名(下标),下标值是整型数.
2.数组的定义
数组必须先定义,再使用.
格式:Public|Static|Dim|Private|ReDim数组名(上界|下界TO上界)[As数据类型]
其中Static ReDim只能在函数或过程内部定义
在VB中,不写下界,默认为0。可在程序的通用对象声明部分用Option Base1声明数组的下界为1。
3.数组元素的使用
在VB中,不能使用整个数组,只能引用其元素.数组元素的表示形式为:数组名(下标).
4.数组的初始化
数组的初始化就是给数组各元素赋初值.
可用:数组名=Array(数组元素值)
给数组各元素赋初值.
5.数组元素的输入
利用FOR循环语句和INPUTBOX函数输入
6.数组的输出
数组元素可用PRINT方法来实现
7、数组元素的复制
单个数组元素可以像简单变量一样从一个数组复制到另一个数组,也可以复制给一个数组的中的某个元素。复制整个数组,仍要用到FOR语句。