如何实现VBA中函数的可变参数传递

请看下面函数参数的说明:

[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]

部分 描述

Optional 可选的。表示参数不是必需的。如果使用了该选项,则 arglist 中的后续参数都必须是可选的,而且必须都使用 Optional 关键字声明。如果使用了 ParamArray,则任何参数都不能使用 Optional 声明。

ByVal 可选的。表示该参数按值传递。

ByRef 可选的。表示该参数按地址传递。ByRef 是 Visual Basic 的缺省选项。

ParamArray 可选的。只用于 arglist 的最后一个参数,指明最后这个参数是一个 Variant 元素的 Optional 数组。使用 ParamArray 关键字可以提供任意数目的参数。ParamArray 关键字不能与 ByVal,ByRef,或 Optional 一起使用。

varname 必需的。代表参数的变量的名称;遵循标准的变量命名约定。

type 可选的。传递给该过程的参数的数据类型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、 String(只支持变长)、Object 或 Variant。如果参数不是 Optional,则也可以是用户定义类型,或对象类型。

defaultvalue 可选的。任何常数或常数表达式。只对于 Optional 参数时是合法的。如果类型为 Object,则显式缺省值只能是 Nothing。

那么如何实现呢?

Option Explicit

Function WYQSum(ParamArray vals() As Variant)

Dim val As Variant

Dim sigma As Long

sigma = 0

For Each val In vals

sigma = sigma + val

Next

WYQSum = sigma

End Function

注意:

1.以ParamArray宣称的参数数组必须以Variant修饰

2.遍历ParamArray数组的相关变量也必须以Variant修饰

莫找借口失败,只找理由成功。

如何实现VBA中函数的可变参数传递

相关文章:

你感兴趣的文章:

标签云: