为什么这个不稳定的LastRow函数不能自动重新计算?

时间:2012-07-05 13:32:23

标签: excel function excel-vba vba

我决定在excel中确定LastRow的函数可以节省一些时间,因此:

Function LastRow() As Long
Application.Volatile

With ActiveSheet.UsedRange
        LastRow = .Rows(.Rows.Count).Row
    End With

End Function

在大多数情况下,这很好,但我注意到如果实际的最后一个单元格只是格式化,它将不会重新计算输入值时的方式。 它会在重新计算时得到正确的结果,但我认为让这种不稳定会自动完成。

我误解了什么?

注意 任何做类似事情的人都要注意,当你激活另一个工作表时,使这个易失性并使用ActiveSheet使它变得不可靠,因为该函数返回该工作表中的LastRow并重新计算。可能不是最好的主意。

1 个答案:

答案 0 :(得分:2)

仅在计算单元格时触发易失性:MSDN

有一种欺骗的方法 - 这是基于更改单元格的事实,你必须先选择它:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    Application.Calculate
End Sub

请注意,这可能会破坏一些基本功能。在Microsoft KB文章中,他们评论说他们的示例会破坏复制/粘贴

的能力