




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、If语句的嵌套使用:指If或Else后面的语句块中又包含有If语句。语句格式为:If Then If Then End IfEnd If【例1】比较3个数值变量x、y和z的值,通过交换,使得xyz。程序语句如下:If xy Then t=x: x=y: y=t 如果xy If yz Then t=y: y=z: z=t 如果yz If x=90me!Zpjg=优秀Case 80,81,82 to 89me!Zpjg=良好Case 70 to 79me!Zpjg=中等Case 60 to 69me!Zpjg=及格Case Elseme!Zpjg=不及格End Select又例如:Dim strx
2、 as string *1Select Case strx Case A to Z, a to z stry=英文字母 Case !,?,.,; stry=标点符号 Case Is68 stry=字符的ASCII码值小于68 Case Else stry=其他字符End Select 循环语句(1)Do WhileLoop循环语句语法格式为:Do While 条件表达式 Exit Do Loop 功能:Do While循环语句:当条件表达式结果为真时,执行循环体,直到条件表达式结果为假或执行到Exit Do语句而退出循环体。(2)Do UntilLoop循环语句语法格式为:Do Until 条
3、件表达式 Exit Do Loop Do Until循环语句:当条件表达式结果为假时,执行循环体,直到条件表达式结果为真或执行到Exit Do语句而退出循环体。(3)DoLoop While循环语句语法格式为:Do Exit Do Loop While 条件表达式 说明:关键字While用于指明当条件为真(True)时,执行循环体中的语句。(4)DoLoop Until循环语句语法格式为:Do Exit Do Loop Until 条件表达式说明:关键字Until用于指明当条件为真(True)前执行循环体中的语句。对于(1)和(2)循环语句先判断后执行,循环体有可能一次也不执行;而对于(3)和
4、(4)循环语句为先执行后判断,循环体至少执行一次。在DoLoop循环体中,可以在任何位置放置任意个数的Exit Do语句,随时跳出DoLoop循环。如果Exit Do使用在嵌套的DoLoop语句中,则Exit Do会将控制权转移到Exit Do所在位置的外层循环。当省略While或Until条件子句时,循环体结构变成如下格式:Do Exit Do Loop循环结构仅由Do. Loop关键字组成,表示无条件循环,若在循环体中不加Exit Do语句,循环结构为“死循环”。【例3】把26个小写英文字母赋给数组strx。Dim strx(1 to 26) As StringI=1Do While I=
5、26strx(I)=Chr(I+96)I=I+1Debug.print strx(i)Loop5)ForNext循环语句主要用于循环次数已知的循环操作。语句格式为:For 循环变量=初值 To 终值 step 步长值Exit For Next 循环变量功能:循环变量先被赋初值。判断循环变量是否在终值内,如果是,执行循环体,然后循环变量加步长值继续;如果否,结束循环,执行Next后的语句。说明:循环变量必须为数值型。step步长值:可选参数。如果没有指定,则step的步长值默认为1。注意:步长值可以是任意的正数或负数。一般为正数,初值应小于等于终值;若为负数,初值应大于等于终值;步长值不能为0,
6、否则造成“死循环”。【例4】把26个大写英文字母赋给数组strx。Dim strx(1 to 26) As StringI=1For I=1 To 26 strx(I)=Chr(I+64)Next I说明:循环体结束后,循环变量的值为循环终值+步长值,上例循环结束后I值为27。【例5】分析下列程序的循环结构:For K=5 To 10 Step 2K=K*2Next K按照公式计算,循环次数为:(10-5+1)/2=3次,但这是错误的。实际上,该循环的循环次数为只有1次(循环变量先后取值5和12,循环执行1次之后,循环变量值为12,超过终值10,循环结束)。【例6】在立即窗口中显示有(*)组成
7、的5*5的正方形。Sub Procedure5( ) 输出5*5的正方形 Const MAX=5 定义常量 Dim Str As String Str= For n=1 to Max Str=Str+* Next nFor n=1 to Max Debug.print Str Next nEnd Sub(6)WhileWend循环语句lWhileWend循环与Do WhileLoop结构类似,但不能在WhileWend循环中使用Exit Do语句。lWhileWend循环语句格式为:lWhile条件表达式llWend过程调用l函数调用函数名称(参数表)l例题计算圆面积,使用函数调用方法l过程调
8、用Call 过程名称(参数表)l参数传递ByVal传值方式,单向ByRef传址方式,双向举例子说明!【例7】在窗体对象中,使用函数过程实现任意半径的圆面积计算,当输入圆半径值时,计算并显示圆面积。在窗体中添加以下控件:创建两个标签控件,其标题分别设为:半径和圆面积。创建两个文本框控件,其名字分别设为:SinR和SinS创建一个命令按钮,其标题设为“计算”,在其Click事件过程中,加入如下代码语句:Private Sub command1_Click( )me!SinS=Area(me!SinR)End Sub在窗体模块中,建立求解圆面积的函数过程Area()。代码如下:Public Func
9、tion Area(R As Single) As SingleIF RVal(me!Siny) ThenMsgbox x值大于y值,不需要排序,vbinformation, 提示Me!Sinx.SetFocusElsea= Me!Sinxb= Me!SinySwap a,bMe!Sinx = aMe!Siny = bMe!Sinx.SetFocusEnd IfEnd Sub在窗体模块中,建立完成排序功能的子过程Swap。代码如下:Public Sub Swap(x,y)Dim tt=xx=yy=tEnd Sub运行窗体,可实现输入数据的排序。在上面的例子中,Swap(x,y)子过程定义了两个
10、形参x和y,主要任务是:从主调程序获得初值,又将结果返回给主调程序,而子过程名Swap是无值的。9.5.2 参数传递参数传递l在VBA中,实参向形参的数据传递有两种方式,即传值(ByVal选项)和传址(ByRef选项),传址调用是系统默认方式。区分两种方式的标志是:要使用传值的形参,在定义时前面加有“ByVal”关键字,有“ByVal”关键字,为传值方式,否则为传址方式。l(1)传值调用的处理方式是:当调用一个过程时,系统将相应位置实参的值复制给对应的形参,在被调过程处理中,实参和形参没有关系。被调过程的操作处理是在形参的存储单元中进行,形参由于操作处理引起的任何变化均不反馈、影响实参的值。当
11、过程调用结束时,形参所占用的内存单元被释放,因此,传值调用方式具有单向性。l(2)传址调用的处理方式是:当调用一个过程时,系统将相应位置实参的地址传递给对应的形参。因此,在被调过程处理中,对形参的任何操作处理都变成了对相应实参的操作,实参的值将会随被调过程对形参的改变而改变,传址调用方式具有双向性。【例9】创建有参子过程Test(),通过主调过程Main_click( )被调用,观察实参值的变化。被调子过程Test( ):Public Sub Test(ByRef x As Integer) 形参x说明为传址形式的整型量x=x+10 改变形参x的值End Sub主调过程Main_click( ):Private Sub Main_click( )Dim n As Integer 定义整型变量nn=6 变量n赋初值6Call Test(n) MsgBox n 显示n值End Sub当主调过程Main_click( )调用子过程Test( )后,“MsgBox n”语句显示n的值已经发生了变化,其值变为16,说明通过传址调用改变了实参n的值。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农牧设备回收合同范本
- app软件采购合同范本
- 劳动合同范本 简约
- 佛山机械购销合同范本
- 京东供货方合同范本
- 加工协作合同范本
- 劳务合同范本保密协议
- 动漫公司产品合同范本
- 修理提成合同范例
- 全款买车正规合同范本
- 经典文学作品中的女性形象研究外文文献翻译2016年
- 控股集团公司组织架构图.docx
- 高炉煤气安全知识的培训
- 2008 年全国高校俄语专业四级水平测试试卷
- 需求供给与均衡价格PPT课件
- 最常用2000个英语单词_(全部标有注释)字母排序
- 人造革的几种生产制造方法
- 在银行大零售业务工作会议上的讲话讲解学习
- 古代传说中的艺术形象-
- 水电站大坝土建安装工程悬臂模板施工手册
- 三体系内审检查表(共58页).doc
评论
0/150
提交评论