【问题标题】:Function with multiple parameters具有多个参数的函数
【发布时间】:2016-11-05 17:56:17
【问题描述】:

我有一个带有多个参数的 VBA 函数,我需要从 excel 表而不是从子表中获取,如何将输入划分为我的函数所需的参数数量?

例如:

Function func(a as double,b as double) as double
    'calculations
    'some return value
End Function

这就是我一直在尝试获取值的方式:

【问题讨论】:

    标签: excel vba function arguments


    【解决方案1】:

    如果您想处理多个不知道数量的参数,请使用ParamArray 参数

    例如,假设 func() 应该简单地将您传递给它的参数相加:

    Function func(ParamArray args() As Variant) As Double
        Dim i As Long
        Dim cell As Range
    
        For i = LBound(args) To UBound(args) '<--| loop through each passed argument
            If TypeName(args(i)) = "Range" Then '<--| if the current element is a Range
                For Each cell In args(i) '<--| loop through range cells
                    func = func + cell.Value
                Next cell
            Else '<--| otherwise
                func = func + args(i) '<--| simply process the current argument value
            End If
        Next i
    End Function
    

    【讨论】:

      【解决方案2】:

      这是你想要的吗?

      代码:

      Function TestFunction(a As Double, b As Double) As Double
      
         TestFunction = a + b
      
      End Function
      

      Excel表格:

      =TestFunction(A1,B1)
      

      【讨论】:

      • 是的,但是当我在excel中选择单元格,并用逗号分隔参数时,我仍然得到一个错误。我希望函数所在的单元格表示值错误。我想知道的是如何手动输入三个excel单元格值作为vba函数的参数。
      • 我对逗号和分号区别的理解是,有些语言设置使用一种,而另一些则使用另一种。对于您遇到的问题,我需要知道您正在使用哪些方程式,但是,单元格有时会被格式化为文本或其他格式。有时出错的另一件事是除以零的情况。您是否使用调试器逐步完成了计算?
      猜你喜欢
      • 2020-08-29
      • 1970-01-01
      • 2013-08-02
      • 2015-04-25
      • 2021-09-10
      • 2019-01-16
      • 2016-06-01
      相关资源
      最近更新 更多