1

Excel で LastRow を決定する関数を使用すると、長期的には時間を節約できると判断しました。

Function LastRow() As Long
Application.Volatile

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

End Function

ほとんどの場合、これで問題ありませんが、実際の最後のセルが単に書式設定されている場合、値が入力された場合のように再計算されないことに気付きました。再計算すると正しくなりますが、これを揮発性にすると自動的にそうなると思いました。

私は何を誤解しましたか?

関数がそのシートのLastRowを返し、再計算するため、これを揮発性にしてActiveSheetを使用すると、別のシートをアクティブにした瞬間に信頼できなくなることに注意してくださいおそらく最良のアイデアではありません。

4

1 に答える 1

2

揮発性は、セルが計算されたときにのみトリガーされます: MSDN

チートする方法があります - これは、セルを変更するには、最初にセルを選択する必要があるという事実に基づいています。

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

これにより、いくつかの基本的な機能が損なわれる可能性があることに注意してください。Microsoft KBの記事では、彼らの例はコピー/貼り付けの機能を壊すとコメントしています。

于 2012-07-05T13:42:46.933 に答える