1

我决定在 excel 中确定 LastRow 的函数从长远来看可能会为我节省一些时间:

Function LastRow() As Long
Application.Volatile

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

End Function

在大多数情况下,这很好,但我注意到,如果实际的最后一个单元格仅被格式化,它不会重新计算输入值时的方式。它会在重新计算时正确,但我认为让这个 volatile 会自动做到这一点。

我误解了什么?

请注意 ,任何人都在做类似的事情,请注意,当您激活另一张工作表时,将其设为 volatile 并使用 ActiveSheet 会使其不可靠,因为该函数会返回该工作表中的 LastRow 并重新计算。可能不是最好的主意。

4

1 回答 1

2

Volatile 仅在计算单元格时触发:MSDN

有一种作弊方法——这是基于这样一个事实,即要更改单元格,您必须先选择它:

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

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

于 2012-07-05T13:42:46.933 回答