在一个单元格中输入的下面引用另一个单元格的自定义函数不起作用。我不懂为什么。有谁知道答案吗?
Public Function SpecialCellBroken(rng As Range)
Debug.Print rng.Worksheet.Cells.Address
Debug.Print rng.Worksheet.Cells.SpecialCells(xlCellTypeLastCell).Address
SpecialCellBroken = rng.Worksheet.Cells.SpecialCells(xlCellTypeLastCell).Address
End Function
返回调试窗口:
$1:$1048576
$1:$1048576
但是,以下 Sub 可以正常工作并返回最后一个单元格的地址:
Sub SpecialCellWorksFine()
Debug.Print Selection.Worksheet.Cells.Address
Debug.Print Selection.Worksheet.Cells.SpecialCells(xlCellTypeLastCell).Address
Selection.Worksheet.Cells.SpecialCells(xlCellTypeLastCell).Select
End Sub
返回调试窗口:
$1:$1048576
$J$21
使用 Parent
从范围引用工作表也不起作用。
在参数 rng
上尝试了 ByVal
。也没有效果好转。
有什么建议吗?这里有什么问题?谢谢。
最佳答案
.SpecialCells(xlCellTypeLastCell)
无法在 UDF 中工作,因为 UDF 无法与 Excel(或您当时使用的程序)交互。但你可以做的是:
Sub SpecialCellWorksFine()
x = Selection.Worksheet.Cells.SpecialCells(xlCellTypeLastCell).Address(False, False)
n = y(x)
End Sub
Public Function y(x As String)
'Code goes here
End Function
这已被简化,但原理是相同的,您在调用 UDF 之前分配您想要进入 UDF 的值,然后将您想要的值拉入 UDF(我的限制相信是 30)
关于vba - SpecialCells(xlCellTypeLastCell) 不适用于 Excel 中的自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42904376/