Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13372 / 13644 ツリー ←次へ | 前へ→

【5650】メモリを解放したい ラスカル 03/5/23(金) 17:39 質問
【5651】Re:メモリを解放したい Jaka 03/5/23(金) 17:47 回答
【5666】Re:メモリを解放したい ラスカル 03/5/27(火) 8:36 質問
【5675】Re:メモリを解放したい ぴかる 03/5/27(火) 11:57 回答
【5678】Re:メモリを解放したい Jaka 03/5/27(火) 12:36 回答
【5682】Re:メモリを解放したい ラスカル 03/5/27(火) 14:01 お礼
【5683】失礼しました。 ぴかる 03/5/27(火) 14:53 発言

【5650】メモリを解放したい
質問  ラスカル  - 03/5/23(金) 17:39 -

引用なし
パスワード
   こんにちは。困っているので教えてください。

1ボタン押下処理内でブックを作って、
そして、そのブックはクローズしています。

で、処理自体結構重いのですが、
1回目にボタンを押した時には、処理は正常終了します。
が、2回目にボタンを押した時は必ずメモリ不足になります。

バージョンは2000では、メモリ不足でエラーメッセージが表示されるだけですが、
97だとメモリ不足のエラーが出た後、エクセルが落ちます。
実際の使用は97で行う予定ですので、かなりこれでは困ります。

それで、以前のメモリについての質疑もみて、
DoEvents
も、記述してみたのですが、
1ボタン押下では連続してブックを作るようなことはしていませんし、
クローズしてから、ボタンの処理は終わっている為、
制御もOSにかえっていると思うんですね。
そのためか、全然改善は見られませんでした。

処理の書いてあるエクセルファイルを初期起動させた段階の
メモリを100とすると、
1回目処理最中、最高で300になります。
処理が終わると200になります。
そのあと、200から、2回目の処理を走らせると、
途中で落ちます。
多分300あたりが限界なんだとおもいます。。
でも、1回目の処理が終わった段階で初期段階の
メモリまで減ってくれれば次の処理もできるのですが・・・。
作ったブックも閉じてるし。
でも、メモリの領域は完全にはクリアされないんでしょうか?

せめてもの、改善方法でもいいのでおしえてください。

【5651】Re:メモリを解放したい
回答  Jaka  - 03/5/23(金) 17:47 -

引用なし
パスワード
   こんにちは。

どんなコードなのか解りませんが、単純にEndで終らせてみるとか。

【5666】Re:メモリを解放したい
質問  ラスカル  - 03/5/27(火) 8:36 -

引用なし
パスワード
   こんにちは。お返事ありがとうございます。

>どんなコードなのか解りませんが、単純にEndで終らせてみるとか。

Endで終わらせるとは、Excelを終了させるという意味ですか?
(コード自体はちょっと長くて複雑な為ここでは説明するのは
 やめておきますね)
VB等のボタンのように、連続してボタンの押下処理が
行えるのが望ましいのですが、それではメモリの解放はできないのでしょうか?

【5675】Re:メモリを解放したい
回答  ぴかる  - 03/5/27(火) 11:57 -

引用なし
パスワード
   ラスカルさん、Jakaさん、こんにちは。

横から少し失礼します。
End Sub ではなく、End で終わらせれば良いと思います。
メモリされている変数の値が解放されます。

多分、こんな感じやったと思います。自分自身使った事ないんで、嘘言ってるかも?。

【5678】Re:メモリを解放したい
回答  Jaka  - 03/5/27(火) 12:36 -

引用なし
パスワード
   単純に書くと
syori1を走らせた後、syori3を走らせるのと
syori2を走らせた後、syori3を走らせた違いって事です。
VBがわかるんですから、ヘルプ見てみたらと思うんですけど。

Public aa As Variant

Sub syori1()
  aa = 999
  MsgBox aa
End Sub

Sub sypri2()
  aa = 999
  MsgBox aa
  End
End Sub

Sub syori3()
  MsgBox aa
End Sub

【5682】Re:メモリを解放したい
お礼  ラスカル  - 03/5/27(火) 14:01 -

引用なし
パスワード
   ぴかる さん 、Jakaさん、ありがとうございました。

実は以前回答を頂いた時に、Endも書いてみました。
多少改善されたようですが、
残念ながら全てのメモリは解放されないようです。
(Excel初期起動時のメモリに戻らない)
2回目の処理が行えるほどのメモリになりません。

しかし、(先程気付いたことで申し訳ないのですが)
2回目の処理で落ちる前のメモリが、1回目のMax値に
達していないことがあるようなんです。
そうすると、メモリが直接の理由ではないのかなと思ったり。
シートのコピーを1500回程しているのですが、
コピー回数に制限があると聞いたことがあるので、
ちょっとそっちの方でも調べてみようと思います。

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

【5683】失礼しました。
発言  ぴかる  - 03/5/27(火) 14:53 -

引用なし
パスワード
   恥ずかしい。(^^;)
やっぱ間違ってましたね。ごめんなさい。
最近あんまりやってへんので、絶不調モードみたいです。
しばらくお休みモードとしますネ。
それでは、また。

13372 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free