VB考试教程:过程之子过程
2.子流程(子流程)
子流程是为响应事件而执行的程序段。将模块中的代码分成子进程后,在应用程序中查找和修改代码就变得更加容易了。子进程类似于用户定义的函数,只是子进程不返回与其名称相关联的值。子流程通常用于获取输入数据、显示或打印来自用户的信息,或者操作与特定条件相关的几个属性。子程序也用于处理和返回过程调用中的几个变量。大多数函数只能返回一个值,但是子流程可以返回多个值。
(1)定义子子流程
定义子流程的语法格式:
[private | public | friend][static]sub过程名称[(参数列表)]
[节目片段]
[出口接头]
[节目片段]
末端接头
例如:
Private Sub Subtest()
Print“这是一个Sub过程”
End Sub
描述:
1)子流程以Sub开始,以End Sub结束。sub和End Sub之间是描述进程操作的语句块,称为“进程体”或“子程序体”。
格式中参数的含义如下:
Public(可选):表示Sub过程是一个公共过程,可以在程序中的任何地方调用。每个表单的通用流程通常在标准模块中由Public定义,表单层定义的通用流程一般在本表单中使用,也可以在其他表单模块中使用。
Private(可选):表示Sub过程是私有的,只能由该模块中的其他过程访问,而不能由其他模块中的过程访问。
Friend(可选):只能在类模块中使用。表示子流程在整个项目中可见,但对对象实例的控制器不可见。
Static(可选):这意味着每次调用过程时,局部变量的值保持不变。如果省略Static,则默认情况下局部变量是“自动”的,即每次调用过程时,局部变量都被初始化为0或空 string。Static属性对Sub外部声明的变量没有影响,即使它们在过程中使用。
注意:如果没有使用Private、public或Friend,默认情况下Sub过程是Public。
过程名(必需):Sub的名称遵循标准变量命名约定。在同一模块中,同一变量名不能既是Sub过程名又是Function过程名。
Parameter list(可选):表示调用时传递给Sub过程的参数的变量列表。如果有多个参数,则用逗号分隔。
“参数列表”表示调用时传递给过程的参数的类型和个数,每个参数的格式为:
[ByVal]变量名[()][作为数据类型]
这里的“变量名”是合法的VB变量名或数组名。如果是数组,数组名后面要加一对括号;
“数据类型”是指变量的类型;如果省略,它将是变体;默认情况下;
变量名前面的“ByVal”是可选的。如果添加了ByVal,则表明该参数是“逐值”参数,否则是“引用”参数。这将在后面详细描述。
2)可以在过程体中使用一个或多个Exit Sub语句来执行Sub过程的退出。
3)Sub过程不能嵌套。也就是说,在一个子流程内,不能定义子流程或功能流程;不能使用GoSub、GoTo或Return进入或退出Sub程序。只能通过调用来执行Sub过程,并且可以嵌套调用。
4)子流程可以是递归的,即流程可以调用自身来完成特定的任务。但是,递归可能会导致堆栈溢出。通常,Static关键字和recursive Sub过程不会一起使用。
5)在过程调用中,发送给子过程的参数值和类型必须与子过程声明语句中的参数值和类型一致。
以下是一个子流程的示例:
Sub试用(x为整数,ByVal y为整数)
x = x+100
y = y * 6
print x,y
End Sub
上面的过程有两个形参,第二个形参前面有ByVal,表示该形参是一个值传递形参。
一个过程可以有参数,也可以没有参数,这就是所谓的无参数过程。示例:
sub Continue query()
Do
Response $ = InputBox $(" Continue(Y或N)?")
如果Response$="N "或Response$="n ",则End
如果Response$="Y "或Response$="y ",则Exit Do
循环
End Sub
对于无参数过程,调用时只需写过程名。
(2)建立子流程
子程序可以建立在标准模块或表单模块中。
有两种方法可以在标准模块中构建流程。
第一种方法包括以下步骤:
1)"添加模块"并同时打开模块的"代码窗口";
2)“工具”菜单/“添加流程”命令打开“添加流程”对话框;
3)在名称框中输入要建立的过程的名称(如试用);
4)在类型栏中选择要建立的流程类型。如果建立了子流程,选择“子流程”;同样,如果建立了功能程序,选择“功能程序”;
5)在范围栏中选择流程的适用范围。如果选择“公共”,则建立的流程可以用于该项目中的所有表单模块;如果选择了“私有”,则只能用于此标准模块。
0条评论