在没有参数的自定义函数中添加两个单元

时间:2015-09-05 18:44:34

标签: excel vba excel-vba user-defined-functions

我正在尝试学习VBA for Excel。我正在观看有关VBA中自定义函数/用户定义函数的教程。我尝试创建一个用户定义的函数,但它在我输入函数名称的单元格中显示#REF!错误。我正在尝试添加(A Cell + B Cell),而不将任何参数/参数传递给函数。我正在使用Offset来遍历具有该公式功能的Cell剩余的1,2个单元格。这是我的代码:

Option Explicit

Function ADD12()
Dim Number_1 As Integer
Dim Number_2 As Integer

Number_2 = ActiveCell.Offset(0, -2).Value
Number_1 = ActiveCell.Offset(0, -1).Value
ADD12 = Number_1 + Number_2
End Function

我的工作表的截图:

Worksheet

2 个答案:

答案 0 :(得分:6)

#REF错误是因为您无法将单元格地址用作函数名称。

但请注意,ActiveCell将永远在变化。您可能需要查看Caller以获取函数所在的单元格。

例如:

Option Explicit

Function ADD_12()
Dim Number_1 As Integer
Dim Number_2 As Integer
Dim R As Range

Set R = Application.Caller

Number_2 = R.Offset(0, -2).Value
Number_1 = R.Offset(0, -1).Value
ADD_12 = Number_1 + Number_2
End Function

答案 1 :(得分:4)

您遇到的问题是您为UDF选择的名称是非法的。

ADD12是工作表上单元格的地址。这可以保证引用错误,并且永远不会调用您的UDF。

将名称更改为不是单元格地址的内容,例如ADD12_

Caller是完成所需操作的正确方法,除非您真的希望它从所选单元格中进行计算。这两种方法都可以保证您的函数是非易失性的,这意味着如果您更改其中一个相关值,它将不会自动更新结果。

您应该使用Long变量类型​​而不是整数。