以下自定义函数在单元格中输入并引用另一个单元格不起作用。我不懂为什么。有人知道答案吗?
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
从范围到工作表的引用也不起作用。
在参数ByVal
上尝试rng
。也没有效果更好。
有什么建议在这里有什么问题吗?谢谢。
答案 0 :(得分:1)
.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中(限制我相信是30)