• ベストアンサー

メモリが不足しています(VBA)

エクセルのVBAで 「メモリが不足しています」と表記されました。 どのようにしたら、メモリの容量を上げることができますか? VBAではメモリを上げることが出来ない仕様なのでしょうか? ご存知の方がいましたら教えていただけないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

すでに不足してきているプログラムなので、 これ以上を求めるには物理メモリ容量(の装着)を変えるしかないです。 普段はそんなことまではしないので 無駄な使用を少なくして限られたメモリ内での実行を目指します。 例えば、 DIM SH(256,65536,256) 65536行×256列×256シート分、 こんなのあっても1度に使用する部分はそんなにないので無駄です。 1行単位の確保があればいい、なら DIM SH(256) 256列分 です。 無駄に準備している変数はないか、確認。 >どのようにしたら、メモリの容量を上げることができますか? >VBAではメモリを上げることが出来ない仕様なのでしょうか? 利用メモリを制御できるかは、わかりません。 もっとコアな部分を触るのかもしれません。 下手するとほかのアプリが動かなくなる危険があるので、 これは策として考えない方がいいです。 普通そんなプログラムは目指しません。 少ないメモリで動くよう目指す、効率化を図るのが良いです。

saterain20
質問者

お礼

ありがとうございました。

その他の回答 (2)

回答No.2

はじめまして、通るすがると申します。 私も、同じ状況になったことがありそのとき調べた限りではPCのメモリ不足でした。 VBA自体の言語は、オブジェクト毎にメモリの解放、確保ができるほとちゃんとした言語 ではないため、巨大なソースを作成しようとするとメモリ不足になりがちです。 所詮VBAは、EXCELのおまけみたいなものであり、一システム的なものを作るには、向 かないと思います。(かなり小規模なものはできるとは思いますが。。) ただ、コーディングの方法についても無駄にメモリを消費する場合もあります。 たとえば、内部サブルーチンコールにおいて、CALL命令を使用せず直接サブルーチン名 を記述すると多くのメモリを消費しているようです。 いずれにしても、VBAで作るのは、ツール的位置ずけで使用するレベルと限定して開発 することをお勧めします。

saterain20
質問者

お礼

ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

どんなコードを実行しているのか。複雑で長くて質問には掲示できないのか。 http://officetanaka.net/excel/vba/error/execution_error/index.htm の「メモリが不足しています」の解説を読んで、思い当たる節は無いか。 質問ぶりから、ス質問者は、そんな大きな(多数行)のコードを作れるレベルに思えないが。 多数のデータを配列に溜め込んだりしてますか。 こういうのは素人的な思い付きのロジックでコード作成に取りか語りすると怖い。 対象のブック数やシート数はどれくらい?

saterain20
質問者

お礼

ありがとうございました。

関連するQ&A