【问题标题】:SpecialCell(xlCellTypeLastCell) does not work in custom function in ExcelSpecialCells(xlCellTypeLastCell) 在 Excel 中的自定义函数中不起作用
【发布时间】:2017-03-20 21:16:46
【问题描述】:

下面在引用另一个单元格的单元格中输入的自定义函数不起作用。我不懂为什么。有人知道答案吗?

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 在 UDF() 中不起作用。

标签: vba excel


【解决方案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(限制 I相信是30)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多