0

次のサブがあります。このスクリプトにより、一部の情報が 15 秒ごとに固定長のテーブルに書き込まれます。結果はグラフ化され、リアルタイムの動くグラフ感覚を生み出します。

問題は、ワークブックを保存する行のコメントを外すと、タスク マネージャーで、Excel がより多くのメモリ (約 3000 KB) を使用し、それを保持していることに気付きます。最終的に、Excel がメモリ不足になり、クラッシュします。オブジェクトなどを Nothing に設定しようとしましたが、役に立ちません。これはすべてセーブラインによるものですが、その理由はよくわかりません。メモリの問題を保存して回避するにはどうすればよいですか?

Sub Record()

    Dim BookValueTable As ListObject: Set BookValueTable = Range("bookvalue_table").ListObject

    If Sheets("Orders").LoggingButton.Value And _
        BookValueTable.Range(BookValueTable.ListRows.Count + 1, 1) <> Now Then

        Dim NewRow As ListRow: Set NewRow = BookValueTable.ListRows.Add(AlwaysInsert:=True)
        NewRow.Range(1, 1) = Now
        NewRow.Range(1, 2) = Sheets("Orders").Range("total_dollar_pnl")
        While BookValueTable.ListRows.Count >= 28800
            BookValueTable.ListRows(1).Delete
        Wend
        ThisWorkbook.RefreshAll
        If Hour(Now) = 17 Then
            Application.OnTime TimeValue("18:00:00"), "Record"
        Else
            Application.OnTime Now + TimeValue("00:00:" & 15 - (Second(Now) Mod 15)), "Record"
        End If
        'Workbooks("Book1.xlsm").Save
    End If

    Set BookValueTable = Nothing
    Set NewRow = Nothing

End Sub
4

0 に答える 0