VBA函数添加两个单元格的值[重复]

Posted

技术标签:

【中文标题】VBA函数添加两个单元格的值[重复]【英文标题】:VBA function adding the values of two cells [duplicate] 【发布时间】:2019-05-17 03:01:45 【问题描述】:

我是 VBA 的新手,我被要求创建一个函数来添加两个单元格的数值。

我想出了以下内容,但我收到了消息

编译错误:无法分配给数组,Additionex

在底部标记为问题...

有人可以帮忙吗?

Function Additionex(num1 As Double, num2 As Double) As Double()
    Dim num3 As Double

    num3 = num1 + num2

    Additionex = num3
End Function

【问题讨论】:

【参考方案1】:

你也可以使用评估

Public Function Additionex(ByVal num1 As Double, ByVal num2 As Double) As Double
    Additionex = Evaluate(num1 + num2)
End Function

如果你想要更通用的东西,它接受范围(你的两个单元格作为参数)并且可以处理错误,请考虑如下:

Public Function Additionex(ByVal cell1 As Range, ByVal cell2 As Range) As Variant
    If IsNumeric(cell1.Value) And IsNumeric(cell2.Value) Then
        Additionex = Evaluate(num1 + num2)
    Else
       Additionex = CVErr(xlna)
    End If
End Function

【讨论】:

您能否简要解释一下这个案例中 ByVal 的偏好。 我有什么收获? 您传递的是参数的实际值而不是引用。传递参数 ByVal 的优点是它可以保护变量不被过程更改。 docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/… 同样的原则也适用于 VBA。 @VBasic2008 同样的规则适用于对象,但ByValByRef 适用于对象引用本身。如果您传递一个对象ByVal,则被调用的过程不能更改对象指针(将其设置为新对象或将其设置为Nothing)。它仍然可以改变对象的属性。【参考方案2】:

不要把它变成一个数组:

Function Additionex(num1 As Double, num2 As Double) As Double
    Dim num3 As Double
    num3 = num1 + num2
    Additionex = num3
End Function

【讨论】:

【参考方案3】:

Double() 是一个 Double 类型变量的数组。你想要as Double

Function Additionex(num1 As Double, num2 As Double) As Double

    Dim num3 As Double

    num3 = num1 + num2

    Additionex = num3

End Function

【讨论】:

以上是关于VBA函数添加两个单元格的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

vba怎样把一个单元格中的值赋给另一个单元格

从 vba 中的单元格地址获取 excel 合并单元格的值

如何在vba中得到当前单元格的行号和列号

如果当前单元格在 VBA 中为空,则获取相邻单元格的值

Excel VBA 根据下拉框单元格的值来改变另一个下拉框单元格的值

vba在单元格中生成的公式如何变成文本值