VBA のメモリ不足
この記事では、いくつかの例を使用して、VBA の メモリ不足
エラーについて説明します。
VBA のメモリ不足
エラー
Excel がマクロの実行中にデバイスのすべてのリソースを使用すると、VBA は メモリ不足
エラーを返します。 コードを計算して実行するには、メモリが不足します。
多くのプログラムがデバイスで実行されているときに発生し、Excel で広範なマクロを実行しようとしているか、または Excel でエラーが発生したときに永久ループを作成することができます。
非常に多くのワークシートと行を含むワークブックで作業していると、VBA で メモリ不足
エラーが発生します。 大量のデータを処理するループを作成すると、メモリ不足
エラーが発生します。
多くのオブジェクトを操作し、SET
ステートメントですべてを設定するが、ループまたはプロシージャ間のオブジェクトへの参照をクリアしない場合。 例の助けを借りて議論しましょう。
以下のループ内のコードは、複数のシートで複数のファイルを開くと、メモリ不足
エラーを引き起こす可能性があります。
Sub TestMemory()
Dim wb As Workbook
Dim ws As Worksheet
Dim i As Single
For Each wb In Application.Workbooks
For Each ws In wb.Sheets
Do Until ActiveCell = "A1048576"
ActiveCell = 1 + i
i = i + 1
ActiveCell.Offset(1, 0).Select
Loop
Next ws
Next wb
End Sub
VBA でオブジェクトを解放する
ループとオブジェクトを操作するときは、オブジェクトを一度使用したら NOTHING
に設定する必要があります。 メモリが不要になった場合は、メモリを解放します。
set str = ""
set num = []
Excel のインスタンスが 1つだけ実行されていることを確認します。 巨大なファイルと大量のデータを扱う場合、Excel で開いているセッションが多くないことを確認する必要があります。
必要な場合は、一度開いてください。 これを確認するには、タスク マネージャーに移動して、その時点で実行されている Excel のインスタンス数を確認する必要があります。
キーボードで Ctrl+Alt+Delete を押し、タスク マネージャーをクリックして、Excel のインスタンスが 1つだけ実行されていることを確認します。
同様に、バックグラウンドで実行されている Excel の例がないことをタスク マネージャーで確認できます。 [バックグラウンド プロセス] が表示されるまでタスク マネージャーを下に見て、Excel がプロジェクトの対象外であることを確認します。
Excel レコードのサイズを確認します。 使用頻度の高い線と線分は、ワークシートで使用されている線分の下に配置されています。
成功には、セルが空いているかどうかに関係なく、これらのセルに記憶が含まれます。 コンソールで CTRL+SHIFT+END を押してドキュメントのサイズを確認し、セル ポインターがどこにあるかを確認します。
使用している最後のセルの下に適切に配置されていると仮定すると、セル ポインター上の塗りつぶされていない行とセクションをすべて消去し、その後レコードを再保存します。 これにより、Excel ドキュメントのサイズが小さくなります。
VBA でメモリをチェックする別の方法
Excel でメモリを解放するには、別の方法があります。 すばらしいアイデアは、Excel を使用していない場合に備えて閉じ、後で開くことです。
Excel が保存されているメモリを解放し、ブックが開かれていない場合でもメモリを保持する傾向があります。
デバイスの更新プログラムをチェックし、まだ使用していない VBA アドインをチェックして、Office のバージョンが最新であることを継続的に確認します。 これらをアンインストールして、より多くのメモリを解放できます。