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 同样的规则适用于对象,但ByVal
和ByRef
适用于对象引用本身。如果您传递一个对象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函数添加两个单元格的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章