版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章
模块
本章内容提要第1讲模块与VBA基础知识
1第2讲VBA程序设计2第3讲面向对象程序设计及VBA程序调试3第二讲VBA程序设计
本讲主要教学内容12VBA程序的基本结构各种语句形式的应用小结3学习目标1
掌握VBA程序的基本结构的基本概念。2
掌握VBA程序的基本结构相应结构程序实例应用。3
掌握选择结构、循环结构以及其他语句实际应用方法。重点与难点
VBA程序基本结构形式、选择结构、循环结构是本讲的重点。循环结构、各种结构嵌套应用是本讲的难点。引言按其语句代码执行的先后顺序,VBA中的程序被分为顺序程序结构、条件判断结构和循环程序结构。本讲将学习VBA程序设计的结构、各种结构实际应用内容。
8.3VBA程序设计
1、顺序结构:顺序结构是指程序的执行按照程序中语句的先后顺序执行。程序的执行流程如下图所示。8.3.1程序的基本结构程序的结构可以采用传统的流程图来描述。传统流程图中的基本符号如下图所示。
2、选择结构
:选择程序结构用于判断给定的条件,根据判断的结果来控制程序的流程。使用选择结构语句时,要用条件表达式来描述条件。在VBA中,选择结构通过If语句与SelectCase语句来实现。
⑴If条件句:If语句根据测试条件的结果来选择执行其中的语句。If条件语句有3种形式:⑵SelectCase语句:如果条件太多,分支较复杂,使用If语句就会显得累赘,而且程序易读性会变差。这时可使用SelectCase语句来写出结构清晰的程序。If…ThenIf...Then...ElseIf…Then…ElseIf…Else
8.3VBA程序设计
①If…Then。在程序需要作出选择时使用该语句。该语句又有两种形式,分别为单行形式和多行形式。。单行形式的语法为:If条件Then语句
单行形式的语法为:If条件Then语句EndIf例8-1:已知两个数x和y,比较它们的大小,且确保x大于y。程序段的代码为:
Ifx<yThent=x:x=y:y=t
‘交换变量x与y的值
EndIf
或:Ifx<yThent=x:x=y:y=t
8.3VBA程序设计
注意:与单行形式相比,多行形式执行的语句通过EndIf来标志结束。如果对执行的多条语句不方便写在同一行时,使用这种形式会使代码整齐美观。
②If...Then...Else。如果程序要根据条件的成立与否选择执行相应的语句,则使用If...Then...Else。语法格式为:If条件Then语句Else语句EndIf
8.3VBA程序设计
程序流程如图所示。
8.3VBA程序设计
例8-2:如下面的代码,判断如果UpdateFlag的值为True则显示一条消息“UpdateSuccessfully”,否则显示一条信息“UpdateFailed!”。IfUpdateFlagThenMsgBox"UpdateSuccessfully"ElseMsgBox"UpdateFailed"EndIf
③If…Then…ElseIf…Else。如果要从3种或3种以上的条件中选择一种,则要使用If…Then…ElseIf…Else。语法格式为:
8.3VBA程序设计
注意:若“条件1”为True,则执行Then后的语句;否则,再判“条件2”,为True时,执行随后的语句,依次类推,如果所有的条件都不满足,则执行Else块的语句。IF条件1Then语句ElseIf条件2Then语句[ElseIf条件2Then语句]…Else语句EndIf
8.3VBA程序设计
例8-3:输入一学生成绩,评定其等级。等级评论方法是:90~100分为“优秀”,80~89分为“良好”,60~79分为“及格”,60分以为“不合格”。Ifx>=90then Debug.Print"优秀"ElseIfx>=80Then Debug.Print"良好"ElseIfx>=60Then Debug.Print"及格"Else Debug.Print"不及格"EndIf
④SelectCase语句
。SelectCase语句是根据表达式的求值结果,选择执行几个分支中的一个。其语法如下:
8.3VBA程序设计
SelectCase变量或表达式Case表达式列表1 语句组1Case表达式列表2
语句组2
…Case表达式列表n
语句组nCaseElse
语句组EndSelect
SelectCase语句的SelectCase后的表达式是必选参数,可为任何数值表达式或字符串表达式;在每个Case后出现表达式列表是多个“比较元素”的列表。表达式列表可有下面4种形式之一,如下表所示。
8.3VBA程序设计
④SelectCase语句
。
8.3VBA程序设计
例8-4:设计一个窗体,如图所示,使用selectcase…..语句来实现例8-3的成绩等级评选。解题方法:该窗体有2个标签,2个文框,文本框名称分别为Text1与Text2,2个命令按钮,名称分别为Command1与Command2。为Command1单击事件编写如图右所示的代码。教师演示
3、循环结构
:循环结构主要用来描述重复执行算法的问题,它是程序设计中最能发挥计算机特长的程序结构。
循环结构可以看成是一个条件判断语句和一个转向语句的组合。循环结构有三个要素,它们分别是循环变量、循环体和循环终止条件。循环结构在程序框图中是利用判断框来表示,判断框内写上条件,两个出口分别对应着条件成立和条件不成立时所执行的语句,其中一个要指向循环体,然后再从循环体回到判断框的入口处。
8.3VBA程序设计
⑴Do…Loop语句
:该形式的语句通过Do来执行循环,有4种形式,形式一与形式二为当型循环,形式三与形式四为直到型循环。其中While是条件为真时循环,Until是条件为假时循环。
8.3VBA程序设计
当型循环的程充流程如下左图所示,直到型循环的程序流程如下右图所示。
8.3VBA程序设计
8.3VBA程序设计
例8-4:分析下面有四个程序,理解Do…Loop语句程序结构特点,确定各程序执行后I的值。SubCommand1.Click()
DimIAsInteger
I=1
DoWhileI<=20
PrintI
I=I+1
LoopEndSubSubCommand1.Click()
DimIAsInteger
I=1
DoUntilI<=20
PrintI
I=I+1
LoopEndSub程序运行后I的值为:1程序运行后I的值为:21⑵
While…Wend循环结构
:该语句的功能与DoWhile<条件>….Loop实现的循环完全相同。区别在于该语句中不能出现Exit语句!
8.3VBA程序设计
语句形式为:
While<条件>语句组Wend
程序运行后I的值为:2SubCommand1.Click()
DimIAsInteger
I=1
Do
PrintI
I=I+1
LoopWhileI<=20EndSubSubCommand1.Click()
DimIAsInteger
I=1
Do
PrintI
I=I+1
LoopUntilI<=20EndSub程序运行后I的值为:21
⑴For循环语句
:For循环一般用于循环次数已知的循环。语句形式如下,该循环结构执行过程如右图所示。
8.3VBA程序设计
For循环变量=初值
to终值
[Step步长]
语句块
[ExitFor]
语句块
Next循环变量循环体循环执行的条件>0:初值<=终值步长缺省为1<0:初值>=终值=0:初值=终值
步长
For循环语句,一般用于循环次数已知情况。若循环变量在循环体内没有其他改变其值的语句,则其循环计算方法可以确定为:循环次数例1:ForI=2To13Step3PrintINextIPrint“I=“,I循环次数?输出结果?循环执行次数:
输出I的值分别为:25811
循环结束,输出为:I=14例2:ForI=2To13Step2PrintII=I*2NextIPrint“I=“,I循环次数?输出结果?循环执行次数:
2输出I的值分别为:27
循环结束,输出为:I=17
8.3VBA程序设计
循环的嵌套——多重循环结构:如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定。以下是各种嵌套循环的示例:(1)ForI=….…..ForJ=….….NextJ…..NextI(2)ForI=….…..DoWhile/Until….….Loop…..NextI(3)DoWhile….…..ForJ=….….NextJ…..Loop(4)DoWhile/Until….…..DoWhile/Until….….Loop…..Loop
8.3VBA程序设计
对于循环的嵌套,要注意以下几点:
(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;
(3)不能从循环体外转向循环体内,也不能从外循环转向内循环。
正
确
错
误
Forii=1To10Forii=1To20… Nextii Nextii
Forii=1To10Forjj=1To20… NextjjNextiiForii=1To10Forjj=1To20… Nextii Nextjj
Forii=1To10…
NextiiForii=1To10…
Nextii
8.3VBA程序设计
4、其他语句
:除了前面所学的一些重要语句格式,我们还了解几个其他常见的语句。
8.3VBA程序设计
⑴Goto语句
其形式为:
GoTo{标号|行号}
作用是无条件地转移到标号或行号指定的那行语句。由于goto语句破坏了程序的逻辑顺序,一般不建议使用。IfNumber=1ThenGoToLine1ElseGoToLine2
Line1:’标号1MyString="Numberequals1“Line2:’标号2MyString="Numberequals2"
8.3VBA程序设计
PrivateSubForm_Click()DimI%,Num%Do'建立无穷循环。
ForI=1To100'循环100次。
Num=Int(Rnd*100)'生成一个0~99的随机数。
SelectCaseNumCase10:ExitFor'退出For...Next循环。
Case50:ExitDo'退出Do...Loop循环。
Case64:ExitSub'退出子过程。
EndSelectNextILoopEndSub例8-5:右边的例子是使用Exit语句退出For...Next循环、Do...Loop循环及子过程。⑵Exit语句用于退出Do...Loop、For...Next、Function或Sub代码块。对应的使用格式为:ExitDo、ExitFor、ExitFunction
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年鄂州市鄂城区中小学教师招聘考试备考题库及答案详解
- 2026年江苏省连云港市中小学教师招聘笔试模拟试题及答案详解
- 2026年上海市杨浦区街道办人员招聘笔试备考试题及答案详解
- 2026年齐齐哈尔市梅里斯达斡尔族区中小学教师招聘笔试参考试题及答案详解
- 2026年贵港市港南区街道办人员招聘笔试备考题库及答案详解
- 2026年上饶市信州区中小学教师招聘笔试备考题库及答案详解
- 2026年厦门市集美区法检系统书记员招聘笔试模拟试题及答案详解
- 2026年海南省海口市街道办人员招聘考试模拟试题及答案详解
- 2025年淮安市淮阴区街道办人员招聘考试试题及答案详解
- 2025年宁夏回族自治区银川市中小学教师招聘考试试题及答案详解
- 校园消防隐患排查整治
- 钢筋制作后台分包合同
- 金属学与热处理课后习题答案(崔忠圻版)东北大学
- 国企中层干部竞聘测试题库(+答案)
- DLT595-2025《六氟化硫电气设备气体监督导则》深度解读
- 湖北新八校2026届高三第二次联考(二模)语文试题及参考答案
- 康复机器人市场调研报告
- 白石洲调研报告
- 2026年《必背60题》消防队文员高频面试题包含详细解答
- 2026年物流运输无人机标准作业指南
- 2026年中国移动政企客户经理岗位高频面试真题
评论
0/150
提交评论