模块与VBA编程基础(7)
结束条件语句序列] Loop While条件式 循环流程如图8.21所示。
5.Do-Loop Until语句 Do 循环体 [条件语句序列 Exit Do
结束条件语句序列] Loop Until条件式 循环流程如图8.22所示。
这样,就有4种Do循环结构。使用时,分析方法基本相同。即根据条件式结果的真假,对循环与否做出正确判断。 6.While-Wend语句
While-Wend循环与Do While-Loop结构类似,但不能在While-Wend循环中使用Exit Do语句。White-Wend语句格式为: While条件式 循环体 Wend
While-Wend结构主要是为了兼容QBasic和QuickBASIC而提供的。由于VBA中已有Do While-Loop循环结构,所以尽量不要使用While-Wend循环。
8.5 过程调用和参数传递
本章开始已经介绍了VBA的子过程和函数过程两种类型模块过程及相应的创建方法。下面结合实例介绍过程的调用和过程的参数传递。
8.5.1 过程调用
1.子过程的定义和调用
可以用Sub语句声明一个新的子过程、接受的参数和子过程代码。其定义格式如下 [Public|Private] [Static] Sub 子过程名([<形参>]) [<子过程语句>] [Exit Sub]
[<子过程语句>] End Sub
使用Public关键字可以使这个过程适用于所有模块中的所有其他过程;用Private关键字可 以使该子过程只适用于同一模块中的其他过程。 子过程的调用形式有两种:
Call 子过程名([<实参>]) 或 子过程名[<实参>] Access中,打开窗体的命令是DoCmd OpenForm
例8.1 下面编写一个打开指定窗体的子过程OpenForm()。代码如下: Sub OpenForms (strFormName As String)
'打开窗体过程,参数strFormName为需要打开的窗体名称 If strFormName=\
MsgBox \打开窗体名称不能为空!\警告\
Exit Sub '若窗体名称为空,显示“警告”消息,结束过程运行 End If
DoCmd OpenForm strFormName '打开指定窗体 End Sub
如果此时要调用该子过程打开名为“学生管理”的窗体,只需在主调过程合适位置增添调用语句: Call OpenForms(\学生管理\或 OpenForms\学生管理\2.函数过程的定义和调用
可以使用Function语句定义一个新函数过程、接受的参数、返回的变量类型及运行该函数过程的代码。其定义格式如下:
[Public|Private] [Static] Function 函数过程名([<形参>])[As数据类型] [<函数过程语句>]
[函数过程名=<表达式>] [Exit Function] [<函数过程语句>]
[函数过程名=<表达式>] End Function
使用Public关键字,则所有模块的所有其他过程都可以调用它。用Private关键字可以使这个函数只适用于同一模块中的其他过程。当把一个函数过程说明为模块对象中的私有函数过程时,就不能从查询、宏或另一个模块中的函数过程调用这个函数过程。
包含Static关键字时,只要含有这个过程的模块是打开的,则所有在这个过程中无论是显示还是隐含
说明的变量值都将被保留。
可以在函数过程名末尾使用一个类型声明字符或使用As子句来声明被这个函数过程返回的变量数据类型。否则VBA将自动赋给该函数过程一个最合适的数据类型。 函数过程的调用形式只有一种:函数过程名([<实参>])。
由于函数过程会返回一个数据,实际上,函数过程的上述调用形式主要有两种用法:一是将函数过程返回值作为赋值成分赋予某个变量,其格式为: 变量=函数过程名([<实参>])
二是将函数过程返回值作为某个过程的实参成分使用。
例8.9 编写一个求解圆面积的函数过程Area()。代码如下: Public Funciion Area(R As Single) As Single
'新建函数Area,返回一个单精度型值;接受单精度型参数R If R<=0 Then
MsgBox \圆的半径必须是正数值!\警告\
Area=0 '若圆半径<=0.0设置函数过程返回0值 Exit Function '结束过程运行 End If
Area=3.14*R*R '求半径为R的面的面积Area End Function
如果此时需要调用该函数过程计算半径为5的圆的面积,只要调用函数“Area(5)”即可。
需要特别指出的是,函数过程可以被查询、宏等调用使用,因此在进行一些计算控件的设计中特别有用。
8.5.2 参数传递
由上面过程定义式看到,过程定义时可以设置一个或多个形参(形式参数简称),多个形参之间用逗号分隔。其中.每个形参的完整定义格式为:
[Optional] [ByVal|ByRef] [ParamArray] varname[()] [As type] [=defaultvalue] 各项含义如下:
varname 必需的,形参名称。遵循标准的变量命名约定。 type 可选项,传递给该过程的参数的数据类型。
Optional 可选项,表示参数不是必需。如果使用了ParamArray,则任何参数都不能使用Optional。 ByVal 可选项,表示该参数按值传递。
ByRef 可选项,表示该参数按地址传递。ByRef是YBA的缺省选项n
ParaArray 可选项,只用于形参的最后一个参数,指明最后这个参数是一个Variant元素的Optional数组。使用ParamArray关键字可以提供任意数目的参数。但ParamArray关键字不能与ByVal、ByRef、或Optional一起使用。
Defaultvalue 可选项,任何常数或常数表达式。只对Optional参数合法。如果类型为Object,则显式的缺省值只能是Nothing。
含参数的过程被调用时,主调过程中的调用式必须提供相应的实参(实际参数简称),并通过实参向形参传递的方式完成过程操作。
关于实参向形参的数据传递,还需了解以下内容: (1)实参可以是常量、变量或表达式。
(2)实参数目和类型应该与形参数目和类型相匹配。除非形参定义含Optional和ParamArray选项,参数、类型可能不一致。
(3)传值调用(ByVal选项)的“单向”作用形式与传址调用(ByRef选项)的“双向”作用形式。
过程定义时,如果形式参数被说明为传值(ByVal项),则过程调用只是相应位置实参的值“单向”传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化均不会反馈、影响实参的值。由于这个过程,数据的传递只有单向性,故称为“传值调用”的“单向”作用形式。反之,如果形式参数被
说明为传址(ByRef项),则过程调用是将相应位置实参的地址传送给形参处理,而被调用过程内部对形参的任何操作的形参值的变化又会反向影响实参的值。在这个过程中,数据的传递具有双向性,故称为“传址调用”的“双向”作用形式。
需要指出的是,实参提供可以是常量、变量或表达式3种方法之一。常量与表达式在传递时,形参即便是传址(ByRef项)说明,实际传递的也只是常量或表达式的值,这种情况下,过程参数“传址调用”的“双向”作用形式就不起作用。但实参是变量、形参是传址(ByRef项)说明时,可以将实参变量的地址传递给形参,这时,过程参数“传址调用”的“双向”作用形式就会产生影响。 赋变量J的初始值为5
例8.20 举例说明有参过程应用,其中主调过程test_Click(),被调过程GetData(): '主调过程
Private Sub test_Click() Dim J As I …… 此处隐藏:3735字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)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章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




