VBA エラー 7 メモリが不足しています。の原因と対処方法

VBAを実行するとVBA エラー 7「メモリが不足しています。」を見る機会はありませんか?

コードをみても誤った箇所がわからず途方に暮れる場合もあるかと思います。

そんな中で悩むことは、

・VBA エラー 7「メモリが不足しています。」の原因はなに?
・VBA エラー 7「メモリが不足しています。」の対処はどうすればよい?

ではないでしょうか?

今回は、
VBA エラー 7「メモリが不足しています。」の原因とサクっとできる対処方法について
まとめます!



VBA エラー 7「メモリが不足しています。」はどんなエラー?

VBA エラー 7「メモリが不足しています。」は

プログラムで利用するメモリ領域が足りないときに発生します。

メモリが不足している状態とは主にVBAで扱うデータ量が非常に多い場合に

準備されているメモリ容量の制限を超えた時に発生します。



VBA エラー 7の原因①「モジュールやプロシージャのサイズが64KBを超えた場合」

モジュールやプロシージャのサイズがVBA用に確保されている

領域64KBを超えている場合に発生します。

 

VBA エラー 7の原因①「モジュールやプロシージャのサイズが64KBを超えた場合」の対処方法は分割する

モジュールやプロシージャを64KBに収まるよう

分割するようにしましょう。



VBA エラー 7の原因②「配列やレコード数が多く、VBAが利用できるメモリが不足している場合」

エラー7「メモリが不足しています」は

動的配列を利用している場合に発生しやすいです。

一つ目の増加要因は行のレコード件数

一つ目の増加要因は行のレコード件数です。

行が増えるにつれ、データ量も増えていきます。

二つ目の増加要素は配列の数

二つ目の増加要素は配列の数です。

エクセルでいう列の件数ですね。

1行のレコードでも配列数が1000個もあれば

それだけでデータの容量が大きい状態になるということです。

三つ目の増加要因は各値の情報量

三つ目の増加要因は各値の情報量です。

行や列の数が少なくても、一項目の値が大きいと

それだけでもデータ量が多い状態と言えます。

また、多次元の動的配列を採用している場合は、

データの増加に応じて配列も拡張されていくので

注意をしたいところですね。

 

VBA エラー 7の原因②「配列やレコード数が多く、VBAが利用できるメモリが不足している場合」の対処方法はデータの削減、配列の制限をする

処理に不必要なデータを削除したり、

配列を増やさないよう静的配列に指定することです。

また並列処理を行っている場合はデータを同時に

いくつも読み込まないようにしましょう。

要するに、設計時にしっかりとデータがどの程度増えていくか、

配列はどのようなものが必要かしっかりと決めることが重要というわけです!



 

さいごに

今回は、
VBA エラー 7「メモリが不足しています。」の原因とサクっとできる対処方法について
まとめました。

VBAのエラーはパターンを知っておくと発生した時に慌てず対応することができますので、

しっかりと対処方法を把握するようにしておきたいですね!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です