我在VBA中的for循环返回#REF而不是整数

时间:2016-12-28 15:50:19

标签: vba excel-vba excel

我需要从一个单元格中获取变量x,并在相邻单元格中获得1*x+2*x...+5*x的总和。 我的尝试:

Public Function uzd1(x)
    Dim a, c, b As Integer
    b = 0
    For a = 1 To 5
        c = a * x
        b = b + c
    Next
   uzd1 = b
End Function

然后我在答案单元格中键入“= uzd1(B1)”,但我只得到“#REF!”而不是我需要的摘要。

3 个答案:

答案 0 :(得分:4)

uzd1是一个单元格地址,这就是你得到#Ref错误的原因。

将函数名称更改为其他内容,例如TestCalc,它将起作用。

答案 1 :(得分:3)

由于您要向函数发送数字引用,因此需要将`x As Integer(或'Long')定义为更高的值。

其次,我遇到了 uzd1 的问题(可能是Excel中的“已保存”字样),因此我将其修改为 uzd

第三,由于您希望得到总和,因此请定义函数以返回Integer(或Long以获取更高的值。)

修改后的UDF代码

Function uzd(x As Integer) As Integer

    Dim a As Integer, b As Integer

    For a = 1 To 5
        b = b + a * x
    Next a
    uzd = b

End Function

答案 2 :(得分:0)

根据你的循环,除了将x乘以1到5之外,你什么也不做,这就是15 * x。因此,不需要循环或用户定义的函数