SpecialCell(xlCellTypeLastCell)在Excel中的自定义函数中不起作用
下面的自定义函数与另一个单元格的引用单元格中input不起作用。 我不懂为什么。 有人知道答案吗?
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
在debugging窗口中返回:
$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
在debugging窗口中返回:
$1:$1048576 $J$21
同时从Parent
范围引用到工作表不起作用。 尝试ByVal
参数rng
。 也没有效果更好。 任何build议这里有什么问题? 谢谢。
.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)