• ベストアンサー

表計算上の式がVBA実行中に、メモリを占領して実行速度が遅い。

エクセルVBAで、表計算上の式がVBA実行中に出てきた結果を用いて再計算しようとするのでメモリが表計算に占領されてしまいます。なのでとても実行完了までに時間がかかります(フリーズしたように遅いです)。 できれば表計算の式が、VBA実行時に再計算されないようにしたいのですがどうすればよいでしょうか? PS:表計算上の式は、沢山ありいずれはVBAに組み込みたいと考えてはいますが、現時点ではそれはできないのでなんとか今の状態を残したままスムーズに実行できるようにしたいと考えております。宜しくお願い致します。

  • e-l
  • お礼率45% (158/349)

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

  • ベストアンサー
noname#240783
noname#240783
回答No.2

お邪魔します。 私も#1さんに賛成です!(って、そーゆー問題じゃないか...) #1さんの回答に補足です。 メニュー「ツール」-「オプション」の「計算方法」タブで 「手動」と「保存前に再計算」)にチェックです。 上の操作をVBAの中で実行するには以下のコードを参考、 VBAヘルプで調べてみてください。 Application.Calculation = xlCalculationManual Application.CalculateBeforeSave = True Calculate

その他の回答 (2)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

ScreenUpdating=falseが効果的

参考URL:
http://www.officetanaka.net/excel/vba/speed/index.htm
  • laputart
  • ベストアンサー率34% (288/843)
回答No.1

解釈が違っていたらごめんなさい。 表計算上の式ってセルに埋込んだ関数とか式の 事ですね。VBAの計算中に再計算すると殆ど 無限ループに近くなるって事でしょうか? 「計算を手動にする」に設定ではF9などで 再計算を指定するまでそのままなのですが ※これはオプションで設定できます。 そういう事ではないのでしょうか? (自信なし)

関連するQ&A

  • VBA 別シートの計算表

    Excelについて。 シートAに、計算表があります。 セルa1に入力した値によって、いくつかのExcel関数を利用して、 セルb1に結果を出力しています。 いつも、手入力でセルa1に値を入力して結果を求めていますが。 今度、シートBに膨大な入力するための数値があるので、VBAで自動化できないかと考えています。 今回の質問は、VBAで記述する際に、シートAの入力セルa1に、シートBの入力値を1つずつ代入していき、結果のセルb1をシートBの入力値の隣に出力していこうと考えています。 シートAのa1に入力値を代入して、すぐに結果b1の値を結果出力セルに代入していいのでしょうか? 計算表(シートA)での計算を時間をおく必要があるのでしょうか?=一旦、他のセルを選択するなど。 よろしくお願いします。 ・計算表での計算時間は、1秒未満です。 ・計算表の計算過程もVBAで書けば済む話ですが、プログラミングには疎いので、計算表をそのまま利用したいと考えています。=入力の代入だけVBAで書いていきたいと思います。 ・その他、アドバイスなどいただければ幸いです。 よろしくお願いします。 Excel2010

  • エクセルVBAを実行するとフリーズします。

    タスクマネージャーの数値なのですが異常ですか? コアi7メモリ8Gですが ウィンドウズアップデートをしてから、エクセルVBAを実行するとフリーズします。

  • EXCEL2000 VBA マクロ実行中に他の作業ができないか

    いつもお世話になっております。 EXCEL2000 VBAでマクロ実行中にEXCELで別の作業(表計算したり、別のマクロを実行したり)がやりたいんですが、可能でしょうか。 よろしくお願いいたします。

  • VBAのプログラムとシートでの計算の速度

     現在、エクセルVBAでマクロを組んでいます。 マクロで算出した値を、セルを指定して、シートに代入しています。シートの代入する理由は、途中の計算結果の確認とエクセル関数を利用し、マクロの簡便化を図りたいためです。  代入した値を基にして、エクセル関数を使った結果の値を、他のセルに表示(代入)していますが、VBAで、その結果の値を、利用しています。  お聞きしたいのは、最初にシートに代入してから、エクセル関数の結果を得られる前に、VBAが、値を取得しないかどうか心配です。  素人考えでは、同じエクセル上で動作しているので、エクセル関数の計算終了後に、VBAが動くと思いますが。どうでしょうか?

  • VBA 再実行

    エクセルVBAでループによる以下のような定期実行を行っています。 >1時間に一度株価のデータを取りに行きます。 >データ取得後、他のPCに(VBAでソフトを起動させて)アップロードします。 *このアップロードの時に、ソフトが別の処理をしていると起動しません。 VBAで起動はさせるものの、ソフトが実行しないという状態になります。 そこで、一度行った処理を時間をおいて再度実行させたいのです。 できれば、30秒後と1分後に2回再実行するというようにしたいと思っています。 どなたか、お力添え頂けませんか

  • VBAで実行押すまでExcel非表示にしたい

    VBAでユーザフォームを作成しました。 Excelを立ち上げるとExcelシートの前にユーザフォームが出る状態なのですが、 ユーザフォームの実行ボタンを押すまでは非表示にしたいのですが、どのような記述をしたらよいでしょうか? マクロ的に実行ボタンを押すと結果が、Excel上に反映されるので、実行ボタンを押すまで非表示であれば大丈夫です どうか教えてください。

  • セルの文字式の計算をVBAで行いたい

    A1のセルに "100+5n" という文字式が入っている状態で VBAにてこのセルの文字式計算を行いB1のセルから順に結果を出力したいと思っています。 "n"は1から順に指定された数まで1づつ増えていくようにし B1のセル:105、C1のセル:110、D1のセル:115 ・・・・ と結果がなるようにしたいのですが、VBAでどのように記述すればいいのか悩んでいます。 VBAを使わずにExcelの関数で計算できるのならそれでもよいと思っています。

  • 【Excel】【VBA】実行時エラー メモリ不足

    【Excel】【VBA】実行時エラー -'-2147467259「メモリ不足です」 win8.1 エクセル2010 メモリ8Gのスペックで VBAコードを実行しているのですが たまに 実行時エラー -'-2147467259「メモリ不足です」 となり、マクロが中断されてしまいます。 今回、実行時エラー -'-2147467259「メモリ不足です」と出たコードは rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic です。 前後のコードは省略していますが 普段は問題なく通ります。 strSQLも、中身をクエリのSQLビューに張り付けて、クエリで見てみたけど 問題なく表示されます。 なぜメモリ不足ですとなるのでしょうか? スペックが低いのですか?

  • javaからVBAを実行する方法を教えてください。

    javaからVBAを実行する方法を教えてください。 POIを使っています。 VBAの実行方法がWEBを探しても見つかりません。 エクセルファイルを閉じたまま行いたいです。 ご存知の方がおられましたら教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • EXCELのVBAで作業ファイルを閉じてもメモリの解放をしなくて困っています

    いろいろネットで調べてみたのですが、わからなかったので お願いします。 EXCEL2003のVBAで作業ブックを作り、色々計算した 結果を1つのシートにまとめ、結果シートを新たに作ったブックに コピーします。 その後、作業ブックは保存せずに閉じるのですが、作業ブックで 増えたメモリがブックを閉じても減りません。 自分が調べた限りでは、こういう事例はありませんでした。 作業ブックを閉じても、作業ブックのメモリは解放されないもの なんでしょうか。 どんどん、メモリが増えたままになって困っております。 なんせ、初心者なので、いまひとつわかっておりません。 よろしくお願いいたします。

専門家に質問してみよう