|
本帖最后由 hwc2ycy 于 2013-12-4 09:05 编辑
前面有一篇初步介绍了过程,但没有深入,接下来几篇讲讲过程的调用,过程的参数,今天讲讲过程的调用。
通过前面的学习,想必大家也会写过程了。
先看下面的示例,总共有两个过程:
Sub MultiBeep(numbeeps)
Dim counter As Integer
For counter = 1 To numbeeps
Debug.Print counter '在立即窗口输出counter的值
Beep '蜂鸣器响一声
Next counter
End Sub
Sub Message()
MsgBox "运行结束"
End Sub
如果我要分别执行两个过程,该怎么操作?有童鞋可能想那很简单嘛,按两次F5就可以呀。
请注意,MultiBeep是有参数的,有参数的过程都不能直接用 运行(F5)的方法来调用的。
再退一步,如果两个过程都是没有参数的,这确实可行,可如果有10个或更多过程,是不是得按F5键10次或更多次?
显然,你想让懒人按多次F5的方法是不成的。
这里用到Call语句就能解决 , 并且可以较容易了解代码运行的流程方向并调试它们。
添加一个Sub,然后在里面分别调用两个过程即可。
Sub Main()
Call MultiBeep(56)
Call Message
End Sub
在上面的示例中,Sub 过程 Main 传递参数值 56 去调用 Sub 过程 MultiBeep。
运行 MultiBeep 后,返回 Main,然后 Main 调用 Sub过程 Message。
Message 显示一个信息框;当按"确定"键时,控件会返回 Main,接着 Main 退出执行。
先看看Call语句的语法
Call 过程名 过程参数列表
Call:可选参数。如果使用了Call,则过程参数列表必须加上括号
如上示例的 Call MultiBeep(56)。如果省略了Call,则过程参数列表的括号可加可不加。
如上标例的Call MultiBeep(56),省略Call则可写成MultiBeep 56或者 MultiBeep (56)。
平时使用的还是推荐加上(对于VBA提供的则不加)
另外,大家可以在可以观察这两种形式下的区别:
Call MultiBeep(56)
MultiBeep (56)
使用了Call的情况下,过程名与参数列表的括号之间无空格。
在省略Call的情况下,过程名与参数列表的括号之间有空格。
过程名:这个是必要参数,没有要调用的过程,那咱还CALL啥呢。
过程参数列表: 过程在定义的时候规定了参数 (下几篇介绍)
需注意的地方:如果使用 Call 语法来调用内建函数或用户定义函数,则函数的返回值将被丢弃。
比如我们经常用的消息对话框函数Msgbox,就能通过返回值检测出点击的按钮。
MsgBox MsgBox("test", vbYesNoCancel)
在运行后,第一个消息框显示的内容是test,并且有三个按钮:是,否,取消(英文版本是YES,NO,CANCEL)。
当单击任意一个按钮结束后,会显示第2个消息框,显示的内容是一个整数,代表着在第一个消息框中所击的按钮。
如果只是写成这样MsgBox("test", vbYesNoCancel)的话,会有编译错误(提示缺少=),
只能改成MsgBox "test", vbYesNoCancel |
评分
-
查看全部评分
|