模块与VBA编程基础(6)
End Select
Select Case结构流程图如图8.14所示。
Select Case结构运行时,首先计算“表达式”的值,它可以是字符串或者数值变量或表达式。然后会依次计算测试每个Case表达式的值,直到值匹配成功,程序会转入相应Case结构内执行语句。Cese表达式可以是下列4种格式之一:
(1)单一数值或一行并列的数值,用来与“表达式”的值相比较。成员间以逗号隔开。
(2)由关键字To分隔开的两个数值或表达式之间的范围。前一个值必须比后一个值要小,否则没有符合条件的情况。字符串的比较是从它们的第一个字符的ASCII码值开始比较的,直到分出大小为止。 (3)关键字Is接关系运算符,如<>、<、<=、=、>=或>,后面再接变量或精确的值。 (4)关键字Case Else后的表达式,是在前面的Case条件都不满足时执行的。
Case语句是依次测试的,并执行第一个符合Case条件的相关的程序代码,即使再有其他符合条件的分支也不会再执行。
如果没有找到符合的,且有Case Else语句的话,就会执行接在该语句后的程序代码。然后程序从接在End Select终止语句的下一行程序代码继续执行下去。 例8.8 使用Select Case-End Select语句,完成例8.6的功能。 Sub Procedure3()
Select Case Hour(Time()) Case 8 To 11
Debug.Print\上午好!\ Case 12 To 17
Debug.Print\下午好!\ Case Else
Debug.Print\欢迎下次光临!\ End Select End Sub
例8.9 采用Select Case结构对字符进行分类。 Select Case a$
Case \ '大写字母 str$=\
Case \ '小写字母 Str$=\
Case \ '数字 Str$=\
Case \ '分隔符 Case \ '空串 Str$=\
Case Is<32 '特殊字符 Str$=\
Case Else '其他字符 Str$=\ End Select 5.条件函数
除上述条件语句结构外,VBA还提供3个函数来完成相应选择操作: (1)IIf函数:IIf(条件式,表达式1,表达式2) 该函数是根据“条件式”的值来决定函数返回值。“条件式”值为“真(True)”,函数返回“表达式1”的值;“条件式”值为“假(False)”,函数返回“表达式2”的值。 例如:将变量a和b中,值大的量存放在变量Max中。 Max = IIf(a>b,a,b)
(2)Switch函数:Switch(条件式,表达式1,[,条件式2,表达式2[,条件式n,表达式n]]) 该函数是根据“条件式1”、“条件式2”直至“条件式n”的值来决定函数返回值。条件式是由左至右进行计算判断的,而表达式则会在第一个相关的条件式为True时作为函数返回值返回。如果其中有部分不成对,则会产生一个运行错误。
例如:根据变量x的值来为变量y赋值。 y=Switch(x>0,1,x=0,0,x<0,-1)
(3)Choose函数:Choose(索引式,选项1[,选项2,?[,选项n]]) 该函数是根据“索引式”的值来返回选项列表中的某个值。“索引式”值为1,函数返回“选项1”值;“索引式”值为2,函数返回“选项2”值;依此类推。这里,只有在“索引式”的值界于1和可选择的项目之间,函数才返回其后的选项值;当“索引式”的值小于1或大于列出的选择项数目时,函数返回无效值(Null)。
例如:根据变量x的值来为变量y赋值。 y=Choose(x,5,m+1,n)
上述3个函数由于具有选择特性而被广泛用于查询、宏及计算控件的设计中。 8.4.3 循环语句
循环语句可以实现重复执行一行或几行程序代码。VBA支持以下循环语句结构:For-Next、Do-Loop和While-Wend。 1.For-Next语句
For-Next语句能够重复执行程序代码区域特定次数,使用格式如下: For 循环变量=初值 To 终值[Step步长] 循环体 [条件语句序列
Exit For
结束条件语句序列] Next[循环变置] 其执行步骤(a-d)为: a.循环变量取初值;
b.循环变量与终值比较,确定循环是否进行: 步长>0时
若循环变量值<=终值,循环继续,执行步骤c;若循环变量值>终值,循环结束,退出循环。 步长=0时
若循环变量值<=终值,死循环;若循环变量值>终值,一次也不执行循环。 步长>0时
若循环变量值>=终值,循环继续,执行步骤c;若循环变量值<终值,循环结束,退出循环。 c.执行循环体;
d.循环变量值增加步长不(循环变量=循环变量+步长),程序跳转至b。
循环变量的值如果在循环体内不被更改,则循环执行次数可以使用公式“循环次数=(终值-初值+1)/步长”计算。例如,如果初值=5,终值=10,且步长=2,则循环体的执行重复(10-5+1)/2=3次。但如果循环变量的值在循环体内被更改,则不能适用上述公式来计算循环次数。For语句的流程如图8.18所示。
例8.12 分析下列程序段的循环结构: For K=5 to 10 Step 2 K=2*K Next K
按照公式计算,循环次数为:(10-5+1)/2=3次。但这是错误的。实际上,该循环的循环次数为只有1次(循环变置先后取值5和12,循环执行一次后,循环变置值为12,超过终值10,循环结束)。 步长为1时,关键字Step可以省略。步长一般是整数取值,用实数也可以,但不常见。 如果终值小于初值,步长要取负值;否则,For-Next语句会被忽略,循环体一次也不执行。 如果在For-Next循环中,步长为0,该循环便会重复执行无数次,造成“死循环”。 选择性的Exit For语句可以组织在循环体中的If-Then-End If条件语句结构中,用来提前中断并退出循
环。
For-Next循环结束,则程序从Nect的下一行语句继续执行。 在实际应用中,For-Next循环还经常与数组配合操作数组元素。 例8.13 将A到Z的大写字母赋予字符数组str$()。 For I=1 To 26
str$(I)=Chr$(I+64) '大写字母“A”的ASII码值为65 Next I
例8.14 在立即窗口中显示有星号(*)组成的5×5的正方形。 Sub Procedure5() Const MAX=5 Dim Str As String Str=\
For n=1 To MAX Str=Str+\ Next n
For n=1 To MAX Debug.Print str Next n End Sub
2.Do While-Loop语句 使用格式如下: Do While<条件式> 循环体
[条件语句序列 Exit Do
结束条件语句序列] Loop
这个循环结构是在条件式结果为真时,执行循环体,并持续到条件式结果为假或执行到选择性Exit Do语句而退出循环,循环流程如图8.19所示。
例8.15 用Do While-Loop语句,完成例8.12大写英文26个字母向数组元素赋值的功能。代码如下: I=1
Do While I<=26 Str$(I)=Chr$(I+64) I=I+1 Loop
例8.16 已知斐波那契序列的定义如下: f(0)=0,f(1)=1
f(n)=f(n-1)+f(n-2) 当n>=2时
编写程序,在立即窗口中显示n为2到10时对应的序列值。代码如下: Sub Procedure6() n=1 f1=0 f2=1
Do While n<10
f=f1+f2
Debug.Print f f1=f2 f2=f n=n+1 Loop End Sub
3.Do Until-Loop语句
与Do While-Loop结构相对应,还有另一个Do循环结构,Do Until-Loop结构。该结构是条件式值为假时,重复执行循环 …… 此处隐藏:1689字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




