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

Add two cells in Custom Function without Parameters

我正在努力为 Excel 学习 VBA。我在 VBA 中观看了有关自定义函数/用户定义函数的教程。我试图创建一个用户定义的函数,但它在我键入函数名称的单元格中显示 #REF! 错误。我正在尝试添加 (A Cell + B Cell),而不将任何 argument/parameter 传递给函数。我正在使用 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

以及我的工作表截图:

#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

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

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

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

Caller 是执行您想要的操作的正确方法,除非您真的希望它从所选单元格计算。这些方法中的任何一种都保证您的函数是非易失性的,这意味着如果您更改其中一个依赖值,它不会自动更新结果。

您应该使用 Long 变量类型而不是 Integers。