VBAの配列を最適化していますか?Eraseステートメントでメモリを解放し、処理を高速化する方法

【業務効率化】VBA
スポンサーリンク

  • 「大量のデータを処理するために配列を使ってみたけど、これって使い終わったらそのままでいいのかな?」
  • 「ループの中で配列を使い回すと、前のデータが残ってて計算が狂っちゃう…」

こんなふうに悩んだことはありませんか?

配列は非常に便利ですが、使用後の「片付け」を怠ると、メモリという限られたリソースを不必要に占有し続けてしまいます。 

今日は、そんな事態を防ぐ「Erase(イレーズ)ステートメント」について、解説します。

【業務効率化】VBAの記事を見る 

Eraseステートメントの役割:作業机のリセット 

プログラミング用語で「配列の初期化」や「メモリの解放」と言うと難しく聞こえますが、身近な例えで言うと「作業が終わった机の上を片付けること」です。

VBAの配列には、大きく分けて2種類あります。この2つで、Eraseを使った時の「片付けられ方」が少し違います。

  1. 静的配列(固定サイズ):大きさが決まっている机。Eraseすると「中身だけ」消えて、机はそのまま。
  2. 動的配列(可変サイズ):大きさを変えられる机。Eraseすると「机そのもの」が一旦なくなって、スペースが空く。

この2つの違いを理解しておくと、バグのないスムーズなコードが書けるようになります。

コピペでOK!Eraseの使い方サンプルコード

では、実際にどう書くのか見てみましょう。以下のコードは、そのままVBAエディタに貼り付けて動作を確認できます。

Sub ArrayEraseSample()
    ' --- 1. 静的配列(固定サイズ)の場合 ---
    Dim staticArray(2) As Integer
    staticArray(0) = 100
    staticArray(1) = 200
   
    ' Eraseを実行
    Erase staticArray
   
    ' 配列自体は残っているので、エラーにならず「0」が表示されます
    Debug.Print "静的配列の初期化後:" & staticArray(0)

    ' --- 2. 動的配列(サイズ変更可能)の場合 ---
    Dim dynamicArray() As String
    ReDim dynamicArray(2) ' ここでサイズを決定
    dynamicArray(0) = "こんにちは"
   
    ' Eraseを実行
    Erase dynamicArray
   
    ' ※このまま dynamicArray(0) を参照しようとするとエラー(インデックスが有効範囲にない)になります
    Debug.Print "動的配列を解放しました"
   
    ReDim dynamicArray(5) ' 再び使えるように再定義
    dynamicArray(0) = "再利用開始!"
    Debug.Print dynamicArray(0)
End Sub

なぜEraseを使うべきなの?2つの大きなメリット

わざわざ書かなくても、マクロが終われば自動的に消えるのでは?」と思うかもしれません。

たしかに簡易的な処理であれば問題になりにくいですが、実務レベルのツール開発においては、以下の理由からEraseの活用が不可欠となります。 

1. 前のデータが混ざるのを防ぐ(正確性100%へ)
ループ処理(繰り返し)の中で配列を使う場合、Eraseをしないと、前の回のデータが残ったまま次の計算が始まってしまうことがあります。これは「原因の特定が難しい計算ミス」を招く、一番厄介なバグが生まれます。

2. PCの動作を軽くする(メモリの節約)
動的配列に巨大なデータを入れたまま放置すると、PCの「メモリ」を消費し続けます。特にスペックの低い事務用PCだと、Excel全体の動作が重くなる原因にもなりかねません。Eraseでメモリを解放することで、処理速度の低下を防げます。

まとめ:

VBAの配列を使えるようになったら、次は「美しく片付ける」ことを意識してみてください。

  • 静的配列は「中身のリセット」
  • 動的配列は「メモリの解放」

この使い分けをマスターすれば、PCに優しく、保守性の高いコードを書けるようになります。スマートなコードは、私たちに快適な開発環境と確実な成果をもたらしてくれます。 
ぜひ試してみてください!

【業務効率化】VBAの記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました