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

我决定在Excel中确定LastRow的函数可能为我节省一些时间,

Function LastRow() As Long Application.Volatile With ActiveSheet.UsedRange LastRow = .Rows(.Rows.Count).Row End With End Function 

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

我误解了什么?

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

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

有一种方法可以作弊 – 这是基于改变一个单元的事实,你必须先select它:

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

请注意,这可能会破坏一些基本的function。 在微软知识库文章中,他们评论说他们的例子会打破复制/粘贴的能力