首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多个ParamArray创建函数时出现“编译错误”

使用多个ParamArray创建函数时出现“编译错误”
EN

Stack Overflow用户
提问于 2019-08-19 13:56:37
回答 2查看 65关注 0票数 4

我想在我的函数中包含一个ParamArray,但是到目前为止,我的努力已经失败了。

假设我想要建立一个函数来计算离散分布的平均值。

该职能的形式如下:

代码语言:javascript
复制
Function Dist_Discrete(X1, P1, X2, P2, X3, P3, etc.)

我现在想到了两种解决办法:

  1. 多次使用可选参数。
  2. 使用ParamArray

第二种为首选。但是当我试图定义

代码语言:javascript
复制
Function Dist_Discrete(ParamArray XVal() As Variant, ParamArray Prob() As Variant)

然后出现一个错误消息--“编译错误”。

我可以找到一种方法,通过设置概率和奇数作为值来解决这个问题。但我认为这可能是个好的临时解决方案

EN

回答 2

Stack Overflow用户

发布于 2019-08-19 14:07:50

发布的示例将输入显示为连续列中的单元格,如X1X2。如果是这样的话,just使用Range对象作为输入:

代码语言:javascript
复制
Function Dist_Discrete(X as Range, P as Range) as Double

然后在工作表单元格中:

代码语言:javascript
复制
=DistDiscrete(X1:X30, P1:P30)
票数 4
EN

Stack Overflow用户

发布于 2019-08-19 14:11:27

ParamArray指定过程参数接受指定类型的元素的可选数组。ParamArray只能用于参数列表的最后一个参数。因此,两个param数组是不可能的。(learn.microsoft.com)

但是,您可能会想到Excel中的一个小技巧。例如,让我们考虑以下功能:

Function SumAndMultiply(valuesToSum(), valuesToMultiply()) as Double,它的思想是对valuesToSum()数组的值进行求和,并将结果与每个valuesToMultiply()相乘。

在VBA中,如果第一个表示为范围,那么它将很好地工作:

代码语言:javascript
复制
Public Function SumAndMultiply(valuesToSum As Range, _
        ParamArray valuesToMultiply() As Variant) As Double

    Dim myCell As Range
    Dim sum As Double
    For Each myCell In valuesToSum
        sum = sum + myCell
    Next myCell

    Dim param As Variant
    SumAndMultiply = sum
    For Each param In valuesToMultiply
        SumAndMultiply = SumAndMultiply * param
    Next

End Function
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57558245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档