【烟花原创】VBA零基础之第20篇过程调用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【烟花原创】VBA零基础之第20篇过程调用先看下面的示例,总共有两个过程:
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。

相关文档
最新文档