前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >过程(五)可选参数和可变参数

过程(五)可选参数和可变参数

作者头像
无言之月
发布2019-10-13 16:12:31
4.4K0
发布2019-10-13 16:12:31
举报

大家好,上节介绍了过程传递参数时,形参与实参结合的两种方式,传地址和传值。本节将介绍可选参数和可变参数。

对于可选参数和可变参数,都是在创在过程时可以设置的,概念不易理解,下面还是简单介绍,在通过示例来介绍。

一、可选参数

通常情况下,创建vba过程时候,设置了形参的数量后,调用该过程时,提供的实参数量也是对应的。但在有些情况下,可以把形参设置为可选参数,即可以提供实参也可以不提供。

在vba过程中,通过在形参前面加上Optional关键字来设置该形参为可选参数,在过程内部通过使用ismissing函数可测试调用程序是否传递了可选参数。

下面通过示例来介绍,首先创建一个过程,定义i和h为字符串变量,j为可选参数。

如果调用该过程,A1单元格值等于i,A2单元格值等于h,对于变量h则要先通过ismissing函数,判断是否是缺省的,如果传递了实参,就让A3单元格等于j。

下面在创建过程调用test过程。前两个参数就必须提供,第三个参数就可以选择性提供。

需要注意的是,创建过程时,可以定义多个可选参数,但是可选参数必须放在参数表的自最后,并且必须是variant变体型变量。


二、可变参数

上面介绍可选参数时,可以发现在定义过程时,不管是固定参数还是可选参数,都已经制定了参数的个数,那么在VBA中还可以定义可变参数,即参数的个数在定义时时未知的。

在定义过程的参数表时,在最后一个参数前面加上ParamArray关键字,过程将接受任意个数的参数。

下面通过可变参数编写求和函数的示例来介绍。

首先创建sum1过程,定义变量t为整型变量,第二个参数为数组intnum(),添加ParamArray关键字将其定义为可变参数。

可变参数为一个数组,过程中使用lbound函数和Ubound函数获得数组的下标的上下界。然后通过for循环把每个元素进行累加,并将累加结果保存到第一个参数t中,返回给调用程序。

创建test1过程,用call语句调用sum1过程,定义了整型变量i,用于获得子过程运算的结果。(省略关键字是按地址传递。)

在调用时,参数传递将参数i的地址传递给sum1子过程的形参t,将后面1,2,3,4,5,6作为一个数组传递给intnum()数组。在子过程中计算数组中所有元素的和。

需要注意的是ParamArray只能用于参数列表的最后一个参数,指明最后这个参数是一个Variant变体型变量元素的Optional数组,ParamArray关键字不能和ByVal、ByRef或Optional一起使用。


本节介绍了可选参数和可变参数的知识,后期会介绍Function(函数)过程,祝大家学习快乐。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel和Access学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档