【问题标题】:VBA function adding the values of two cells [duplicate]VBA函数添加两个单元格的值[重复]
【发布时间】: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

【问题讨论】:

    标签: excel vba 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 的优点是它可以保护变量不被过程更改。
    • @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
      

      【讨论】:

        猜你喜欢
        • 2017-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-25
        • 1970-01-01
        相关资源
        最近更新 更多