【ExcelVBA】メモリーの解放方法・タイミングについて徹底解説!

皆さんは、VBAでメモリの解放をしたことがありますか?変数に入れた値をメモリ解放せずにいると、処理が重たくなったり、メモリリークで処理が動かなくなることもあります。そこで今回は、

メモリとは?
VBAでメモリを解放する方法を知りたい

といった基礎的なことから

  • VBAでメモリを解放するサンプルコード
  • 【よくある議論】VBAでメモリの解放は必要か?

といった応用的な方法まで、徹底的に解説します!

メモリとは?

はじめに、メモリについて簡単に解説します。メモリとは、PC上でデータを一時的に記憶しておく場所です。データのコピー、削除などの具体的な操作だけでなく、変数を使う場合にもメモリを使います。

特に、変数を使う場合は「メモリの解放」をしないと、処理が終わるまで無駄なメモリを使い続ける状態になるため、処理が遅くなったりメモリリークと呼ばれる強制的に処理が止まるエラーを引き起こす原因となってしまいます。

そのため、メモリの解放を意識してVBAのコードを書いていかなければなりません。

VBAで変数のメモリを解放する方法とは?

次に、変数のVBAでメモリの解放をする方法を解説します。次のように書くことで、簡単にメモリを解放することができます。

メモリ解放方法:

このように書くことで、変数を使うために確保したメモリの領域を解放することができます。

VBAでメモリを解放するサンプルコード

次に、サンプルコードをもとに、具体的な使い方について解説します。
サンプルコード:

rng1.Value = “変更1”のように値を変更した後、Set rng1 = Nothingメモリを解放しています。このように、使い終わった変数はメモリの解放をするのが重要です。

【よくある議論】VBAでメモリの解放は必要か?

ここまでメモリの解放について解説していきましたが、必ずメモリの解放が必要か?といったらそうではありません。理由は、サブシージャの処理が終わる「End Sub」まで到達すると、自動でメモリが解放されるからです。

先ほどのサンプルでいうと、次のように最後にメモリ解放をしている場合は、書く意味があまりありません。

最後にメモリ解放したサンプル:

Nothingでメモリを解放したあとに、End Subがあるのでコードを書くこと自体が無駄なわけですね。そのため、変数を使い終わったタイミングで、メモリ解放するコードを書くという意識が大事です。

まとめ

今回は、メモリの解放方法・タイミングについて解説しました。初めてメモリの解放を学んだ方は、使い方に慣れるまで時間がかかるかもしれません。しっかりと使い方を覚えてメモリを解放していくことで、バグの少ないコードを作ることができます。

ぜひ、使ってみてくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説