在不带参数的自定义函数中添加两个单元
我正在尝试学习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而不是整数。