语句可以省略花括号吗_Excel VBA解读 | 进阶篇(123):用来调用过程的Call语句...

学习Excel技术,关注微信公众号:

excelperfect

在VBA中,我们可以在过程代码中使用Call语句来调用另一个过程。先来看两个示例。

示例1

代码如下:

Sub testCall()

    Call MyProgram

End Sub

Sub MyProgram()

    MsgBox "试验一下!"

End Sub

运行testCall过程,结果如下图1所示。

21e4fc1f89976f0c05a73c1216511440.png

图1

示例2

也可以在调用其他过程时,向被调用的过程传递参数值,如下面的代码:

Sub testCallPassValue()

    Dim str As String

    str = ActiveCell.Parent.Name

    Call MyPro(str)

End Sub

Sub MyPro(wks As String)

    MsgBox "当前工作表是:" & wks

End Sub

运行testCallPassValue过程,结果如下图2所示。

295144d41b5379e443d8295136a333d2.png

图2

Call语句语法

Call语句的语法如下:

[Call] 过程名[参数]

其中:

  • Call可选,也就是说,Call可以省略。

  • 参数,传递给被调用过程的用逗号分隔的参数。

说明:

  • 若省略Call,则直接在代码中写上要调用的过程名,如上面的示例1所示。

  • 如果被调用的过程含有参数,不省略Call,则应在过程名后使用括号传递参数,如上面的示例2所示。若省略Call,则调用过程中的代码可写为被调过程名加参数。上面示例2中相应的语句可改写为:

MyPro str

或者:

MyPro (str)

  • 在调用其他过程时,使用Call语句是一个好习惯,这将使程序更易读。

参数传递测试

在《Excel VBA解读(121):Sub过程详解——枯燥的语法》中,我们详细讲解了Sub过程的完整语法。我们知道,Sub过程传递参数时,默认采用ByRef引用传递。下面来试试,代码如下:

Sub myPro()

    Dim i As Integer

    i = 1

    Call yourPro(i)

    MsgBox "i的值是: " & i

End Sub

Sub yourPro(num As Integer)

    num = 5

End Sub

在myPro过程中,变量i的初始值是1,将其作为参数值传递给yourPro过程,执行完后,变量i的值变成了5,如下图3所示。

eddf5b6b4d479f8f8ed7495f883f100d.png

图3

运行结果表明,调用过程yourPro后,i的值被修改了。因此,使用ByRef传递参数时,在被调用过程中对参数值的修改,会影响到调用过程中的值。

注意,Sub过程默认采用ByRef传递参数,因此上述被调用过程中的参数语句等价于:

Sub yourPro(ByRef num As Integer)

    num = 5

End Sub

如果将yourPro过程修改如下:

Sub yourPro(ByVal num As Integer)

    num = 5

End Sub

运行myPro过程后的结果如下图4所示。

79d67dd7ce73ff7f6a6355edc07ad377.png

图4

调用过程中的变量值没有被修改,因为ByVal指定参数通过值传递,因此在被调用过程中对参数值的改变,不会影响调用过程的参数值。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值