Visual Basic
第六章 循环程序结构
?For...Next 语句
?Do… Loop 循环语句
?列表框
?组合框
主要内容
万博科技职业学院
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
For …Next 循环语句
? 格式,
For <计数器 >=<初值 > to <终值 > [step <步长 >]
<语句块 >
Next <计数器 >
? 注,
– <计数器 >必须是数值型变量
– 步长可正可负,也可以带小数,缺省值为 1
– 当计数器达到或超过终值时,终止循环。
? 可用 Exit For 语句强行中止循环

?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
For…Next 循环的流程图
计数超过终值?
计数器加上步长
( Next语句)
语句块 (循环体 )
No
Yes
Next的下条语句
如果在循环体中遇到
Exit For 语句,则强行
中止循环
计数器= <初值 >
保存终值和步长
( For语句)
For <计数器 >=<初值 > to <终值 > [step <步长 >]
<语句块 >
Next <计数器 >
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
例 1:求 100以内所有奇数之和
S=0 ? S用于保存累计值,初值为 0
For K = 1 to 100 step 2 ?K-计数器,步长 2
S = S + K ?K=1,3,5,…, 99
Next K ?K+2(步长),再执行循环语句
‘直到 K>=100(终值)
Print,100以内所有奇数之和为, ; S ?输出结果
计算,S=1+3+5+7+……+99
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
例 2:输出图案( P110,例 6-7)
For i = 1 To 5 ?对 1~ 5行
Print Tab(5 + i); ?跳到第 5+ i列
Print String(6 - i,“★,); ?打印 6-I个★
‘输出 6个空格,i个▲
Print Spc(6); String(i,“▲,);
?再输出 6个空格,6-i个☆
Print Spc(6); String(6 - i,"☆ ")
Next i
注意 Tab,Spc和 String函数的用法
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
例 3:二重循环实例:九九乘法表
For m = 1 To 9
Forecolor=vbRed
print m;
Forecolor=vbBlue
For n = 1 To m
Print Tab(n*4); m*n;
Next n
Print '换行
Next m
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
For Each...Next循环
For Each...Next 循环是以对象集合中的每一
个元素作为重复依据的,如果不知道一个集合有
多少元素, For Each...Next 循环非常有用 。
语法格式:
For Each <元素 > In <集合 >
语句块
Next <元素 >
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
例:移动窗体中所有控件
( Controls)
Private Sub form_Click()
Dim ob1 As Object
For Each ob1 In Controls
ob1.Left = ob1.Left + 20
Next ob1
End Sub
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
Do…Loop 语句
Do While <条件 >
<语句块 >
Loop
Do
<语句块 >
Loop While <条件 >
Do Until <条件 >
<语句块 >
Loop
Do
<语句块 >
Loop Until <条件 >
Until <条件 > 相当于 While not <条件 >
可用 Exit Do 中止循环






?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
前测型与后测型的比较
条件
语句块
Loop的下条语句
前测型 Do While <条件 >
<语句块 >
Loop
后测型 Do
<语句块 >
Loop While <条件 >
条件
语句块
Loop的下条语句
Yes
Yes
No
No
先测试 至少执行一次
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
例,国王的奖励
国王要奖励棋王,棋王要求在棋盘第 1格
放 1粒麦子,第 2格加倍,第 3格再加倍,直
到放到第 64格。国王想一想就同意了。国
王粮仓里有 10万吨麦子,
1粒麦子只有 0.1克,请问
国王的麦子可以奖励棋王
到棋盘的第几格?
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
例,国王的奖励(程序)
Private Sub Command1_Click()
Dim q As Single,k As Integer
q = 0.0001,k= 1,s=q ?初值 q=0.1g,k=1(第 1格)
Do While s < 1E8 ?10万吨
k=k+1, q = q * 2, s = s+ q
Loop
Print "第 " & k & "格 "
End Sub
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
ListBox(列表框)及其主要属性
用于显示项目列表。用户可以从列表框中的一系列选项中选
择一个或多个选项。主要属性:
? List(i),设置列表框中包含的项 ( 数组 )
? ListIndex,当前所选列表项的下标
? ListCount,列表项的总数
? Text,当前项文本内容
? MultiSelect,设置是否能够做多个选择
? Selected(i), 数组, 选中的项 ( Boolean)
? Sorted,设置是否按字母顺序排列各项

?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
ListBox(列表框)的主要方法
? AddItem 项目 [,位置 ] 添加项目 。
例如,List1.AddItem,王平,,0
? RemoveItem 位置 删除项目
例如,List1,RemoveItem 0 ( 删除第一项 )
? Clear 删除所有项目
例如,List1.Clear 例
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
ComboBox(组合框)及其主要属性
文本框与列表框的组合, 其主要属性与列表框相同
?List(i),设置组合框中包含的项 ( 数组 )
?ListIndex,当前所选列表项的下标
?ListCount,列表项的总数
?Text,当前项文本内容
?Sorted,设置是否按字母顺序排列各项
?Style,显示方式
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
ComboBox 的 Style 属性
? 0- DropDown Combo
下拉组合框
? 1- Simple Combo
简单组合框
? 2- DropDown List
下拉列表框
?■
Vi
su
al
BA
SI
C




万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech.
组合框 -ComboBox的方法
?AddItem 添加项目 。
例如,Combo1.AddItem,王平,,0
?RemoveItem 删除项目
例如,Combo1,RemoveItem Combo.ListIndex
( 删除当前项 )
?Clear 删除所有项目
例如,Combo1.Clear