2017-07-25 82 views
0

我想创建一个更友好的函数sumproduct版本,但我不明白为什么函数返回#VALUE !.请指教:VBA函数与阵列输入

下面是我的代码,这两个阵列输入的长度是相同的:

Function sp(x As Variant, y As Variant) As Double 

psum = 0 


For i = LBound(x) To UBound(x) 
    qsum = x(i) * y(i) 
    psum = psum + qsum 
Next 

sp = psum 

End Function 
+0

也有你调试的代码和观察qsum和psum如何改变? – FunThomas

+0

问题出在你的数据而不是代码上。检查一下。您传递的数组中可能有文本而不是数字。 –

回答

0

您需要说明是什么qsum和PSUM。另外,还要确保被称为阵列中是同一类型的变体:

Function sp(x As Variant, y As Variant) As Double 
Dim psum, qsum As Double 
psum = 0 


For i = LBound(x) To UBound(x) 
    qsum = x(i) * y(i) 
    psum = psum + qsum 
Next 

sp = psum 

End Function 

测试子

Sub test() 
    Dim ex, wy As Variant 
    ex = Array(1, 2, 3, 4, 5) 
    wy = Array(2, 3, 4, 5, 6) 
    Call sp(ex, wy) 

    End Sub 

这个工作对我来说没有价值的错误