现在的位置: 首页 > 综合 > 正文

第三章 VB程序设计语言基础

2013年04月30日 ⁄ 综合 ⁄ 共 11555字 ⁄ 字号 评论关闭
第三章 VB程序设计语言基础
一 VB中的数据与运算
二 标准函数
三 三种基本结构(顺序,判定,循环)
一 VB中的数据与运算
3.1.1 数据类型
3.1.2 变量与常量
3.1.3 运算符和表达式
3.1.4 数组
3.1.1 数据类型
数值数据类型
(1) Integer型和Long型
用来表示整数.Integer型数据占2个字节,Long型数据占4个字节.
除了十进制整型数,常用的还有八进制和十六进制,它们的表示方法为:
Intger型: 八进制 数值前加&O或&.如&O123
十六进制 数值前加&H.如&H123
Long型: 八进制数值前加&O或&,最后加&.如&O123&
十六进制 数值前加&H,最后加&.如&H123&
(2) Single型和Double型
用来表示浮点数.Single型占4个字节,Double型占8个字节.
表示一些单精度型常量和双精度常量时,可以用以下方法:
0.123E5,0.34E-2,0.8D2

(3) Currency型
为表示钱款而设置.占8个字节.小数点左边最多15位,右边最多4位.
(4) Byte型
占1个字节,表示无符号整数.
字符数据类型
字符(String)类型存放字符型数据.用双引号括起来,如"abc".
注:①""表示空字符串,长度为0.
②若字符串中含有双引号,则用连续两个双引号表如"abc""12".
日期数据类型
日期型(Date)表示日期和时间,占8个字节.用"#"括起来,如
#2004-5-4#等.
逻辑数据类型
逻辑型(Boolean)表示逻辑判断,占2个字节.只有True和Fale两个值.
逻辑型数据转换成整型数据时,True转换为-1,False转换为0.
其他类型数据转换成逻辑型数据时,非0数转换为True,0转换为False.

对象数据类型
对象型(Object)表示图形,OLE对象或其他对象,占4个字节.
变体数据类型
变体型(Varient)可存放任何类型的数据
类型说明符
可在常量或 变量的后边加上类型说明符指明它是哪一种数据类型,常见的类型说明符如下:
整型:% 长整型:&
单精度型:! 双精度型:#
字符串型:$ 货币型:@
3.1.2 变量与常量
命名规则
1. 名字由字母,汉字,数字或下划线组成;
2.名字的第一个字符必须是字母或汉字;
3.名字的有效长度小于等于255个字符;
4.不能使用VB中的关键字.
5.VB中不区分变量名的大小写.
6.为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型.

变量
变量定义的一般格式如下:
Declare 变量名 As 类型
其中,①Declare可以是Dim,Static,Public,ReDim.
Dim,Static用于定义局部变量
Dim用于定义窗体和模块级变量
Public用于定义全局变量
ReDim用于重新定义数组
②类型可以是基本数据类型或用户自定义数据类型
③若"As 类型"省略,默认为变体数据类型
④可在变量名后加类型说明符代替"As 类型
例如:Dim x as Integer,y as Single
Dim s as String
注:Dim定义的局部变量是自动变量,过程结束后其值被重新设置;
Static定义的局部变量是景泰变量,过程结束后其值继续保留.
常量
VB中有三种常量:即直接常量,用户声明的符号常量和系统提供的常量.
(1)直接常量
直接常量其常数值直接反映了其类型,也可在常数值后紧跟类型符显示地说明常数的数据类型.
(2)符号常量
常量可用由用户定义的符号常量表示,格式如下:
Const 符号常量名 [As 类型]=表达式 [,常量名=表达式]……
例如:Const PI=3.1415926
(3)系统提供的常量
除了用户通过声明创建符号常量外,VB系统还提供了应用程序和控件定义的常量,这些常量位于对象库中,在"对象浏览器"中的Visual Basic(VB),Visual Basic for Applications(VBA)等对象库中列举了Visual Basic的常量.
3.1.3 运算符和表达式
运算符
1. 算术运算符
加:+ 减:- 乘:*
整除:/ 浮点除:/ 取模:Mod
负号:- 幂运算:^
2. 字符串运算符
"&"和"+"都是将两个字符串拼接起来.但字符串连接时最好用"&",因为"+"还可以作为算术运算符使用
3. 关系运算符
对两个表达式的值做比较,若关系成立,则返回True,否则返回False.
等于 = 大于 > 大于等于 >= 小于 <
小于等于 <= 不等于 或>字符运算符>关系运算符>逻辑运算符
常用内部函数
VB提供了大量的内部函数(或称标准函数)供用户在编程时调用.内部函数按其功能可分成数学函数,转换函数,字符串函数,日期函数和格式输出函数等. 具体内容参见课本.
3.1.4 数组
1. 数组的概念
2. 静态数组与动态数组
3. 数组的清除和重定义
4. 数组元素的基本操作
5. 控件数组
6. 自定义数据类型
1. 数组的概念
一,数组的概念
在实际应用中,经常需要处理同一类型的成批数据.比如,要处理100个学生的会计这门课程的考试成绩,如果在程序中定义100个变量来表示这批成绩,显然是很麻烦的.我们可以用VB提供的数组来完成这个功能.可以用c1,c2,…,c100来分别代表每个学生的分数,也就是说,用一批具有相同名字,不同下标的下标变量来表示同一属性的一组数据,这样能更清楚的表示它们之间的关系.
在VB中,把一组具有相同名字,不同下标的下标变量称为数组.在计算机中,下标用"()"括起来.比如c(2),其中c为数组名,2是下标.
根据数组中下标变量的个数可以分为一维数组,二维数组或多维数组.
二,数组的声明
定义数组可以用Dim,Public,Private,Static语句实现.
格式(以Dim为例):
Dim ([,]……) [As ]
例:Dim c(99) as Single
Dim s(3,4) as string
Dim stu(3,6)
Dim a(2 to 100) as string*5
Dim b(2 to 30,5 to 40)
说明:
①数组必须要先定义,后使用
②如果不用AS语句指明类型,默认为变体数据类型
③一般情况下,下标的下界默认为0,如果希望下标从1开始,可以用Option Base语句设置,格式为Option Base n ,其中n为下标的下界,只能是0或1
④可以根据需要指定数组下标的下界,格式为
Dim 数组名([下界 To] 上界[,[下界 To]上界]……)
⑤在同一个过程中,数组名不能与变量名同名
⑥在定义数组时如果指明了类型,那么数组中的每个元素都是这种类型的;如果没有指明或定义成了变体数据类型,则其中的每个元素也是变体类型,可以存放各种类型的数据.
2. 静态数组与动态数组
定义数组后,为了使用数组,必须为数组开辟所需要的内存区.根据内存区开辟时机的不同,可把数组分为静态数组和动态数组.
通常把需要在编译时开辟内存区的数组叫做静态数组,把需要在运行时开辟内存区的数组叫做动态数组.
一,静态数组
静态数组的数组元素的个数是在数组声明时确定的,系统运行过程中它的个数不变.
前面定义的几个数组都是静态数组.我们主要讲一下动态数组.
二,动态数组
动态数组是在声明数组时未给出数组的大小(省略括号中的下标),当要使用它时,随时用ReDim语句重新指出大小的数组.
使用动态数组的优点是可根据用户需要,有效地利用存储空间,它是在程序执行到ReDim语句时分配存储空间.

建立动态数组的方法是,使用Dim,Private或Public语句声明括号内为空的数组,然后在过程中用ReDim语句指明该数组的大小.形式如下:
ReDim ([,…]) [As ]
例如:
Dim s() as integer '定义动态数组s,括号不能省略
Private Sub Form_Click()
......
n = InputBox("输入n的值")
m = InputBox("输入m的值")
n = Val(n)
m = vla(m)
ReDim s(n, m) '重新指明数组的大小
......
End Sub
在过程中可多次使用ReDim语句来改变数组的大小,不能改变数组维数,也不能改变数组的类型.

每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失.Visual Basic 重新将数组元素的值置为 Empty(对 Variant 数组),置为 0(对 Numeric 数组),置为 零长度字符串(对 String 数组).如果希望改变数组大小又不丢失数组中的数据,可使用具有 Preserve 关键字的 ReDim 语句就可做到这点.
如:
Dim this() As String
Private Sub Command1_Click()
ReDim this(4)
this(2) = "microsoft"
Print this(2)
ReDim Preserve this(6)
Print this(2)
End Sub
3. 数组的清除和重定义
在一个程序中,同一个数组只能定义一次.有时可能需要清除数组的内容或对数组重新定义,这可以用Erase语句来实现.格式如下:
Erase [,]……
说明:
①在Erase语句中,只给出要刷新的数组名,不带括号和下标
②Erase语句用于静态数组时,用来重新初始化各元素,内容被清空.若是数值数组各元素被置0,字符数组各元素被置为空字符串.
③Erase语句用于动态数组时,删除整个数组的结构并释放该数组所占用的内存.动态数组经Erase后不再存在.下次引用该动态数组之前,必须用ReDim语句重新定义该数组的维数.
4. 数组元素的基本操作
一,给数组元素赋值
1.利用循环结构
For i=1 to 5
A(i)=3
Next i
2.利用InputBox()函数输入
Private Sub Command1_Click()
Dim b(2, 3)
For i = 0 To 2
For j = 0 To 3
b(i, j) = InputBox("输入" & Str(i) & "," & Str(j) & "的值")
Next j
Next i
For i = 0 To 2
For j = 0 To 3
Print b(i, j); " ";
Next j
Print
Next i
End Sub
当给一个较大的数组赋值时,以上方法比较麻烦,可以用Array()函数解决.
3.利用Array()函数
Private Sub Form_Click()
Dim a, b
a = Array(1, 2, 3, 4, 5)
b = Array("11", "22", "33")
For i = 0 To UBound(a)
Print a(i);
Next i
Print
For i = 0 To UBound(b)
Print b(i);
Next i
Print
End Sub
说明:
①Array()函数对各元素赋值,声明的数组是动态数组或连小括号都省略的数组,并且类型只能是Varient.
②数组下界默认为0,可通过Option Base语句决定,上界由Array()函数括号内的参数个数决定,也可通过UBound()函数获得.
③Array函数只适用于一维数组.
二,数组元素的输出
可以通过Print语句对数组输出
对一维数组,用单重循环就能实现,对二维数组,要用二重循环实现.
三,数组元素的复制
1.单个数组元素可以像简单变量一样从一个数组复制到另一个数组.
如:Dim b(4),a(6)
……
b(2)=a(3)
2 .要复制整个数组,要使用For循环语句.
Private Sub Command1_Click()
Dim a(), b()
a = Array(1, 2, 3, 4, 5)
ReDim b(UBound(a))
For i = 0 To UBound(a)
b(i) = a(i)
Next i
For i = 0 To UBound(a)
Print b(i);
Next i
End Sub
3 .要复制整个数组,也可以使用一条简单的赋值语句即可.如:
Dim a(4) as integer,b() as integer
A(0)=0:a(1)=5:a(2)=10:a(3)=13:a(4)=14
B=a
使用这种方法赋值时,必须要注意:
①赋值号两边的数据类型必须一致
②如果赋值号左边的是一个大小固定的数组,则数组赋值出错
③赋值号左边的必须是一个动态数组,赋值时系统自动将动态数组ReDim成与右边同样大小的数组
四,For Each…Next语句
与For…Next语句类似,两者都是用来执行指定重复次数的语句.但For Each…Next语句是专门用于操作数组的,它的格式如下:
For Each In
[]
[Exit For]
Next []
说明:
①格式中的"成员"必须是一个变体变量,是为循环提供的,代表的是数组中的每个元素.
②〈数组名〉没有括号和上下界
用For Each…Next语句可以对数组元素进行处理,它所重复执行的次数由数组中元素的个数确定,数组中有多少个元素,就自动重复执行多少次.
例:
Option Base 1
Private Sub Command1_click()
Dim abc(10) As Integer
For i = 1 To 10
abc(i) = Int(Rnd * 100)
Next i
Print "使用普通循环输出:"
For i = 1 To 10
Print abc(i);
Next i
Print
Print "使用For Each…Next输出:"
For Each x In abc
Print x;
Next
End Sub
5. 自定义数据类型
自定义数据类型由若干个标准数据类型组成,又称记录类型.通过Type语句实现.
格式:
Type自定义类型名
元素名 [(下标)] As类型名
……
[元素名 [(下标)] As类型名]
End Type
如:
Type Student
No As Integer
Name As String*20
Sex As String*1
Mark (1 To 4) As Single
Total As Single
End Type
说明:
①自定义数据类型一般在标准模块(.bas)中定义,默认是Public.若在窗体模块中定义,必须是Private.
②自定义数据类型中的元素类型可以是字符串,但应是定长字符串.
定义好了类型,就可在变量的声明时使用该类型,定义的方法和标准类型是一样的.比如:
Dim stu as student
表示自定义类型变量中元素的格式为:变量名.元素名,如stu.no,stu.name等.
可给变量stu赋值:
标准函数
2.1 数学函数
2.2 转换函数
2.3 字符串函数
2.4 日期与事间函数
1. 数学函数
Sin(N):返回自变量N的正玄函数值,如:sin(0)=0,N为弧度.
Cos(N):返回自变量N的余玄函数值,如:cos(0)=1,N为弧度.
Tan(N):返回自变量N的正切函数值,如:tan(0)=0,N为弧度.
Atn(N):返回自变量N的反正切值,如:atn(0)=0,函数值为弧度.
Sgn(N):返回自变量N的符号.N=0,如:Sqr(81)=9.
Exp(N):返回e的N 次幂值,n>=0.如:Exp(3)=20.086.
Log(N):返回N的自然对数,N>0 ,如:Log(10)=2.3
Int(N):返回不大于N的最大整数,如:Int(3.6)=3.
Cint(N):四舍五入整数.Cint(3.6)=4.
Rnd(N):返回0~1之间的随机小数.
注意:三角函数的自变量以弧度表示.

2. 转换函数
Fix(n):返回n的整数部分,截取小数部分;如:Fix(3.4)=3.
Asc(c):返回字符串C首字符的ASCII码值,如:Asc("A")=65.
Chr(n):返回ASCII码值为n的字符,Chr(65)="65".
Val(c):把数字组成的字符串型数据转换称数值型.Val("456")=456.
Str(n):把数值n转换成字符型,Str(357)="357".
Lcase(c):把字符串c中大写字母转换为小写字母.Lcase("A")="a".
Ucase(c):把字符串c中小写字母转换为大写字母.Ucase("a")="A".
3. 字符串函数
Trim(c):去掉字符串c两端的空格,Trim(" ab ")="ab".
Left(c,n):截取C最左边的n个字符,Left("command,3")="com".
Right(c,n):截取c最右边的n个字符,Right("command,3")="and".
Mid(C,m,n):截取c中第m个字符开始的n个字符.Mid("command",3,2)="mm".
Len(c):返回c包含的字符数,汉字空格都算一个字符.Len("中")=1.
Ucase(c):将c中的小写字母转换成大写字母.Ucase("Who")="WHO".
Lcase(c):将c中的大写字母转换成小写字母.Lcase("Who")="who".
4. 日期与时间函数
Time[$][()] :返回系统当前时间;
Date[$][()] :返回系统当前日期;
Now[()]: 返回系统当前日期和时间;
Day(c/n): 返回数据中当月第几天;
Month(c/n):返回数据中当年第几月;
WeekDay(c/n):返回数据当天是星期几.
三 基本控制结构
3.1 顺序结构
3.2 选择结构
3.3 循环结构
3.1 顺序结构
顺序结构就是各语句按出现的先后次序执行.主要是由一些赋值语句,输入/输出语句等组成.
赋值语句
格式:变量名=表达式
在VB中,既可以给一个变量赋值,也可以给对象的某一个属性赋值.
InputBox()函数
格式:InputBox(提示[,标题][,默认][,x坐标位置][,y坐标位置])
功能:产生一个对话框,让用户从键盘输入内容,当用户单击"确定"按钮或按回车键时,函数返回输入的值.
Private Sub Command1_Click()
r = InputBox("请输入姓名", "教师登记表", "张三", 3000, 4000)
Print r
End Sub
其中:"提示":字符串表达式,在对话框中作为信息显示.
"标题":字符串表达式,在对话框的标题区显示.
"默认":字符串表达式,显示输入框里的默认信息.
"x坐标位置","y坐标位置":整型表达式,坐标确定对话框左上角 在屏幕上的位置,屏幕左上角为坐标原点,单位为twip.
在这五个参数中,只有"提示"是必选的.
注:函数的返回值为字符串类型,所以如果要对返回值进行算术运算,必须要转换成数值型的.
例如:Private Sub Command1_Click()
r = InputBox("请输入第一个数")
s = InputBox("请输入第二个数")
r = Val(r): s = Val(s)
x = r + s
Print x
End Sub
MsgBox()函数
格式:变量=MsgBox(提示[,按钮][,标题])
功能:打开一个信息框,等待用户选择一个按钮.
例如:Private Sub Command1_Click()
r = MsgBox("输入密码", 51, "密码错误")
Print r
End Sub
"提示"和"标题":意义与InputBox函数中对应的参数相同.
"按钮":整型表达式,用来控制在信息框内显示的按钮,图标的种类和数量,该参数的值由4类数值相加产生,这4类数值或符号常量分别表示按钮类型,显示图标的种类,活动按钮(默认按钮)的位置及强制返回模式.按钮设置值及意义见下图.
"按钮"设置值及意义
应用模式
系统模式
0
4096
VbApplicationModule
VbSystemModule
模式
第1个按钮为默认
第2个按钮为默认
第3个按钮为默认
0
256
512
VbDefaultButtonl
VbDefaultButton2
VbDefaultButton3
默认
按钮
关键信息图标红色STOP标志
询问信息图标
警告信息图标!
信息图标i
16
32
48
64
VbCritical
VbQuestion
VbExclamation
VbInformation
图标
类型
只显示"确定"按钮
显示"确定","取消"按钮
显示"终止","重试","忽略"按钮
显示"是","否","取消"按钮
显示"是","否"按钮
显示"重试","取消"按钮
0
1
2
3
4
5
VbOkOnly
VbOkCancel
vbAboutRetryIgnore
VbYesNoCancel
VbYesNo
VbRetryCancel
按钮
类型
描 述
按钮值
系统内部常量
4类分组
MsgBox函数返回值是一个整数值,这个返回值与所选的按钮有关,所选按钮返回数值的意义见下图.
vbNo
7

VbYes
6

VbIgnore
5
忽略
VbRetry
4
重试
VbAbort
3
终止
VbCancel
2
取消
VbOk
1
确定
系统内部常量
返回值
被单击的按钮
再看一个有关返回值的例子:
编写一个程序,用MsgBox函数判断是否继续执行.
Private Sub Form_Click()
Dim Msg$, Title$
Dim m%
Msg$ = "此数据是否正确"
Title$ = "数据验证对话框"
m = MsgBox(Msg$, 35, Title$) '35=3+32+0+0
If m = 6 Then '
Print "正确"; m * m
ElseIf m = 7 Or m = 2 Then
Print "数据错误,请重新输入"
End If
End Sub
对于一些较简单的信息提示,我们可以使用MsgBox语句,格式如下:
MsgBox 提示[,按钮][,标题]
它与MsgBox函数的主要区别是函数有返回值,而语句没有返回值
3.2 选择结构
选择结构,就是对条件进行判断,根据判断结果,选择执行不同的分支.
VB中提供了多种形式的条件语句来实现,我们主要介绍If条件语句和Select
Case语句
If条件语句
If条件语句有两种格式:单行结构和块结构
1.单行结构
格式:
If Then [Else ]
如果Then或Else后面有多条语句,那么各语句之间用":"隔开.
2.块结构
格式:
If Then

[Else
]
End If
Then和Else后面不能有语句,而且最后不要忘了写上End If.
这两种结构都比较简单,就不再举具体的例子了.
在实际应用中,我们还经常用的If语句的嵌套,即一个If语句里又包含一个If语句.举一个简单的例子:
某商场为了促销,采用购物打折的优惠办法,每位顾客一次购物
(1)1000元以上,按九五折优惠
(2)2000元以上,按九折优惠
(3)3000元以上,按八五折优惠
(4)5000元以上,按八折优惠
编写程序,输入购物款数,计算并输出优惠价.
方法一:
Private Sub Command1_Click()
Dim x As Single, y As Single
x = val(Text1.Text)
If x < 1000 Then
y = x
Else
If x < 2000 Then
y = 0.95 * x
Else
If x < 3000 Then
y = 0.9 * x
Else
If x < 5000 Then
y = 0.85 * x
Else
y = 0.8 * x
End If
End If
End If
End If
Text2.Text = Str(y)
End Sub
上面的这个程序出现多次If语句嵌套,程序长,不便阅读.为此VB提供了带ElseIf的块If语句,使程序简化易写.其格式如下:
If Then

Elself Then

……
[Else
]
End If
上面的例子可以改写成这种格式的,代码如下:
方法二:
Private Sub Command1_Click()
Dim x As Single, y As Single
x = Val(Text1.Text)
If x < 1000 Then
y = x
ElseIf x < 2000 Then
y = 0.95 * x
ElseIf x < 3000 Then
y = 0.9 * x
ElseIf x < 5000 Then
y = 0.85 * x
Else
y = 0.8 * x
End If
Text2.Text = Str(y)
End Sub
Select Case 语句
又称情况语句,是多分支结构的另一种形式.格式:
Select Case变量或表达式
Case表达式列表1

Case表达式列表2


[Case Else
]
End Select
格式中的"表达式列表"可为下列形式之一:
(1)表达式[,表达式]……
eg: Case 2,4,6,8
(2)表达式 To表达式
eg: Case 1 to 5
(3)Is关系运算表达式
eg: Case Is<10
情况语句执行时先对"测试表达式"求值,然后测试该值与哪一个Case子句中的"表达式列表"匹配,如果找到了,就执行与该Case语句有关的语句块,执行完后转移到End Select后面的语句;如果没有找到,则执行与Case Else子句有关的语句块,然后在转移到End Select后面的语句.
刚才那个购物打折的例子同样可以用情况语句实现,代码如下:
方法三:
Private Sub Form_Click()
Dim x As Single, y As Single
x = InputBox("请输入购物款数")
x = Val(x)
Select Case x
Case Is < 1000
y = x
Case Is < 2000
y = 0.95 * x
Case Is < 3000
y = 0.9 * x

Case Is < 5000
y = 0.85 * x
Case Else
y = 0.8 * x
End Select
Print "购物款数:"; x, "优惠价:"; y
End Sub
同一个问题,解决的方法可能有多种,我们最好选择自己比较熟悉而又简单的来实现
3.3 循环结构
在实际应用中,经常遇到一些操作并不复杂,但需要反复多次处理的问题,比如人口增长统计,计算存款利息等,这些问题如果用顺序结构来处理十分麻烦,有时甚至难以实现,而使用VB提供的循环语句可以轻松实现.
循环结构就是在指定的条件下多次重复执行一组语句.VB提供了两种不同风格的循环结构:
计数循环(For-Next循环)
当循环(While循环)
Do循环(Do-Loop循环)
For循环语句
格式:
For循环变量=初值To终值[step步长]

[Exit For] 循环体

Next循环变量
说明:
①循环变量也称"循环计算器"或"循环控制变量",为数值型.
②初值与终值均为数值表达式.
③步长是一个数值表达式,为循环变量的增量,可正可负;如果省略,默认为1.
④Exit For可用于提前退出for循环.
⑤Next后面的"循环变量"与For后面的"循环变量"必须相同.
执行过程:
①把"初值"赋给"循环变量"
②检查"循环变量"是否超过终值,若没有则执行循环体,若超出则结束循环,执行Next后面的语句
③循环变量加步长,转②,继续循环.
由上可看出For-Next循环的循环次数由初值,终值和步长三个因素决定,计算公式为:循环次数=Int(终值-初值)/步长+1
下面举一个例子:求n!(n为自然数)
Private Sub Form_Click()
Dim n As Integer
n = InputBox("输入n的值:")
k = 1
For i = 1 To n
k = k * i
Next i
Print n; "!="; k
End Sub
再看一个有关步长和Exit For语句的例子.
Private Sub Form_Click()
For i = 1 To 100
s = s + i
If s = 4851 Then
Exit For
End If
Next i
Print i
End Sub
当循环(While循环)
格式:
While 条件
[语句块]
Wend
当条件为True时,执行循环体.
例:Private Sub Form_click()
Dim char As String
Const ch$ = " "
Counter = 0
msg$ = "输入一个字母"
char = InputBox$(msg$)
While char ch
Counter = Counter + 1
char = InputBox$(msg$)
Wend
Print "输入字母的个数为:"; Counter
End Sub

Do…Loop循环语句
Do循环有两种格式:
格式一:
Do [ {While | Until} ]

[Exit Do]

Loop
说明:
①格式一为先判断后执行,循环体有可能一次也不执行.
格式二为先执行后判断,至少执行一次循环体.
②While用于指明条件为True时就执行循环体.
Until指在条件变为True值之前重复执行循环体.
③Exit Do语句可以提前退出循环
④若语句中省略While或Until子句,即循环由Do-Loop构成,则为无条件循环,循环体内应该由Exit Do语句,否则成为死循环.
格式二:
Do

[Exit Do]

Loop [{While | Until} ]
举一个Do-Loop循环的例子
目前世界人口有60亿,如果以每年1.4%的速度增长,多少年后世界人口达到或超过70亿.
方法一:
Private Sub Form_Click()
Dim p As Double
Dim r As Single
Dim n As Integer
p = 6000000000#
r = 0.014
n = 0
Do Until p >= 7000000000#
p = p * (1 + r)
n = n + 1
Loop
Print n; "年后"; "世界人口达"; p
End Sub
方法二:
Private Sub Form_Click()
Dim p As Double
Dim r As Single
Dim n As Integer
p = 6000000000#
r = 0.014
n = 0
Do While p < 7000000000#
p = p * (1 + r)
n = n + 1
Loop
Print n; "年后"; "世界人口达"; p
End Sub 

抱歉!评论已关闭.