在不带参数的自定义函数中添加两个单元

我正在尝试学习Excel的VBA。 我正在观看有关VBA中的自定义函数/用户定义函数的教程。 我试图创build一个用户定义的函数,但它显示一个#REF! 在我input函数名称的单元格中发生错误。 我试图添加( A Cell + B Cell ),而不传递任何参数/参数的function。 我使用偏移来遍历具有函数作为公式的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 

我的工作表的截图:

工作表

#REF错误是因为您不能使用单元格地址作为函数名称。

但也要注意,ActiveCell将一直在改变。 你可能想看看Caller显示function所在的单元格。

例如:

 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 

您面临的问题是您为UDFselect的名称是非法的。

ADD12是工作表上单元格的地址。 这保证了一个引用错误,你的UDF永远不会被调用。

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

Caller是正确的方式来做你以后的事情,除非你真的想要它从选定的单元格计算。 这两种方法都可以保证你的函数是非易失性的,这意味着如果你改变一个依赖值,它不会自动更新结果。

您应该使用Longvariablestypes​​而不是整数。