第九章
一、Sub过程
(一)建立Sub过程
通用Sub过程的结构与前面多次见过的事件过程的结构类似。一般格式如下:[Static][Private][Public]Sub过程名[(参数表列)]。
语句块
[Exit Sub]
[语句块]
End Sub
(二)调用Sub过程
调用引起过程的执行。也就是说,要执行一个过程,必须调用该过程。
Sub过程的调用有两种方式,一种是把过程的名字放在一个Call语句中,一种是把过程名作为一个语句来使用。
1.用Call语句调用Sub过程
格式:Call过程名[(实际参数)]
2.把过程名作为一个语句来使用
在调用Sub过程时,如果省略关键字Call,就成为调用Sub过程的第二种方式。与第一种方式相比,它有两点不同:
(1)去掉关键字Call;
(2)去掉“实际参数”的括号。
(三)通用过程与事件过程
[Private|Public]Sub控件名事件名(参数表) 语句组End Sub
窗体事件过程的一般格式为:
[Private|Public]Sub Form事件名(参数表) 语句组End Sub
二、Function过程
(一)建立Function过程
Function过程定义的格式如下:[Static][Private][Public]Function过程名[(参数表列)][As类型] [语句块]
[过程名=表达式] [Exit Function] [语句块] End Function
(二)调用Function过程
Function过程的调用比较简单,因为可以像使用Visual Basic内部函数一样来调用Function过程。实际上,由于Function过程能返回一个值,因此完全可以把它看成是一个函数,它与内部函数(如Sqr、Str$、Chr$等)没有什么区别,只不过内部函数由语言系统提供,而Function过程由用户自己定义。
三、参数传送
在Visual Basic中,通常把形式参数叫做“参数”,而把实际参数叫做“自变量”。
(一)形参与实参
Examda提示: 形参是在Sub、Function过程的定义中出现的变量名,实参则是在调用Sub或Function过程时传送给Sub或Function过程的常数、变量、表达式或数组。在Visual Basic中,可以通过两种方式传送参数,即按位置传送和指名传送。
(二)引用
在Visual Basic中,参数通过两种方式传送,即传地址和传值,其中传地址习惯上称为引用。在默认情况下,变量(简单变量、数组或数组元素以及记录)都是通过“引用”传送给Sub或Function过程。在这种情况下,可以通过改变过程中相应的参数来改变该变量的值。这意味着,当通过引用来传送实参时,可以改变传送给过程的变量的值。
(三)传值
传值就是通过值传送实际参数,即传送实参的值而不是传送它的地址。在这种情况下,系统把需要传送的变量复制到一个临时单元中,然后把该临时单元的地址传送给被调用的通用过程。由于通用过程没有访问变量(实参)的原始地址,因而不会改变原来变量的值,所有的变化都是在变量的副本上进行的。
在Visual Basic中,传值方式通过关键字ByVal来实现。也就是说,在定义通用过程时,如果形参前面的关键字ByVal,则该参数用传值方式传送,否则用引用(即传地址)方式传送。
(四)数组参数的传送
Visual Basic允许把数组作为实参传送到过程中。
用数组作为过程的参数时,应在数组名的后面加上一对括号,以免与普通变量相混淆。
四、可选参数与可变参数
Visual Basic6.0提供了十分灵活和安全的参数传送方式,允许使用可选参数和可变参数。在调用一个过程时,可以向过程传送可选的参数或者任意数量的参数。
五、对象参数
对象作为参数与用其他数据类型作为参数的过程没有什么区别,其格式为:Sub过程名(形参表) 语句块 [Exit Sub] ……End Sub。
“形参表”中形参的类型通常为Control或Form.注意,在调用含有对象的过程时,对象只能通过传地址方式传送。因此在定义过程时,不能在其参数前加关键字ByVal。
六、局部内存分配
有时候,在过程结束时,可能不希望失去保存在局部变量中的值。如果把变量声明为全局变量或模块级变量,则可解决这个问题。但如果声明的变量只在一个过程中使用,则这种方法并不好。为此,Visual Basic提供了一个Static语句,其格式如下:
Static变量表
其中“变量表”的格式如下:
变量[()][As类型][,变量[()][As类型]]……
七、Shell函数
Shell函数的格式如下:
Shell(命令字符串[,窗口类型])
编辑推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |