
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
>遅くなる前の(普通に早い)同じプログラムというか、遅くなる前のプログラムを入れてやってみると普通に早く動作します。
そうすると、話が全然違ってきます。私は、使っている最中で遅くなる現象を書いてきましたが、コードとして、遅くなるという場合は、代表的なコードとしては、こういうものがあります。これらを外すと、遅くなります。
Application.ScreenUpdating = False
実行プログラム
Application.ScreenUpdating = True
他にも、イペントを止めるためのオプション
Application.EnableEvents = False
他のブログラムが介入するのを防ぐオプション
Application.Interactive = True
再計算を防ぐために、再計算を自動化か手動化にさせるものがあります。
Application.Calculation = xlCalculationManual
それ以外に、複雑なユーザー定義関数などがあります。それは、経験者が、実際に見てみないと分からないことがあります。ただ、ステップモードで調べてみるか、コードの途中からブレークポイントを入れて、その後、ステップモードで、途中からコードが飛んでいないか調べる方法があります。
No.5
- 回答日時:
>いくつかのマクロでこのひとつだけがこんな症状になり原因がわかりません。
#4の回答者ですが、「原因がわかりません」と言われてしまうと、こちらとしては、もう返事のしようがありません。まず、消去法で、そうでないものに対して、そうでないという返事をしていただかないと、詰められません。それ以外のものもあると言いたいように思えますが、そうしたら、ハードとシステムのメインテナンスをしてください。
この回答への補足
すみません。ありがとうございます。
遅くなる前の(普通に早い)同じプログラムというか、遅くなる前のプログラムを
入れてやってみると普通に早く動作します。ですから、なにかプログラムに変な味付けを
してしまっているんじゃないかと思っています。
No.4
- 回答日時:
本当は、ExcelのバージョンとOSが書かれてあるともう少しはっきりしてくるかもしれません。
>10秒で終わっていたマクロ
かなり大きな範囲を扱っているものだと思います。
4つの可能性を考えてみました。
ひとつは、私の所で起きている現象で、Excelのオブジェクトには、どうも、メモリ・リークがあるものがあるようです。時間が経つと良くありません。特に、UserForm をひらきっぱなしにしていたりするとトラブルが発生します。ただ、私の場合は、一般的なUserFormではなく、サブクラス化して内容を変えています。
もうひとつは、
例えば、IEのオブジェクトと、何か別のActiveX コントロールなどがコンフリクトしているとか、外部オブジェクトが、反乱を起こしている可能性があります。そういう場合、極端にスピードが落ちます。その場合は、タスクマネージャでも分かるとは思いますが、Sytem Explorer では良く分かるのですが、Excel発の外部オブジェクトと、別の常駐しているソフトが分かるはずです。その場合は、こうしたツールで、どちらかの常駐をやめれば、元に戻るはずです。ただ、非常に厄介な問題です。これは、どうもセキュリティ・ソフトなどにも関係しているようです。
可能性は少ないのですが、Excelでは、使用している限りはメモリを解放しないようです。VRAMメモリと仮想メモリとが二つの問題が出てくるようです。キャッシュに、コンパイルの中間言語を溜めすぎている可能性もあります。この場合は、VBEditot のオプションの全般の中のコンパイルの、バックグラウンド・コンパイルをやめればよかったはずです。(ただし、期待は薄いです)
なお、グローバル変数は、それ自体が増加するわけではありませんし、仮に、Range型でも、増加しているわけではないので、あまり変化しません。しかし、グローバル変数であろうとも、ローカル変数であろうとも、ワークシートの領域を広げていくようなものや、関数を利用したものは、トラブルが発生する可能性はあると思います。一旦終了しないと、元には戻りません。
ご親切に、また誠意をこ込めた回答ありがとうございます。
XP 2003ですが、いくつかのマクロでこのひとつだけがこんな症状になり原因がわかりません。

No.3
- 回答日時:
Public な変数や、標準モジュール内の Private な変数を使い、大きなデータや多数のデータを取り扱っているとか。
Public な変数や標準モジュール内の Private な変数は VBA の実行が終了してもブックを閉じない限り解放されなかったと記憶しています。
No.2
- 回答日時:
はじめまして、通るすがるともうします。
あくまでも想像ですが、うまくメモリ解放をしていない、または前の状態のメモリ使用が残っていて
起動するたびに、メモリを拡張していってPCのメモリを使い尽くし、その後仮想メモリを使用してい
いるのではないでしょうか。10倍20倍と時間がかかるタイミングディスクを使用しているがための
ランプ(PC本体にある)がついてませんか?もしくはディスクからアクセスしているためのガラガラ
という音してませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 2 2023/03/02 18:54
- Excel(エクセル) 現在のセルの文字列を右隣のセルの名前にするマクロをつくりたい 4 2023/01/12 09:01
- Visual Basic(VBA) VBA 登録ボタンを省略してエンターキーで作業 4 2022/07/09 22:29
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/04 10:48
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メモリが不足しています(VBA)
-
C言語で、メモリを解放しないで...
-
大量件数のINSERT or UPDATE を...
-
メモリを解放しないとどうなる?
-
ルネサスマイコン(R8C) ビルド...
-
【C言語】再帰が時間がかかる...
-
C言語初心者です。debug assert...
-
クリスタルレポートでメモリ不...
-
動的確保できるメモリ容量
-
VBAの配列サイズとメモリに関して
-
メモリのセグメント違反の解決...
-
4GB搭載したマシンのメモリ情...
-
直接メモリにアドレス割付けで...
-
配列がお手上げです。
-
C,C++プログラムの強制終了時の...
-
PC-98で拡張メモリを使え...
-
FLASH Lite1.1 背景の表示エラ...
-
バッチファイルでの実行EXEのメ...
-
エクセルのメモリ使用状況/Appl...
-
ExitProcessの関数コールについ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAの配列サイズとメモリに関して
-
C言語で、メモリを解放しないで...
-
メモリ不足
-
メモリが不足しています(VBA)
-
「ヒープサイズの設定」て何?
-
メモリのセグメント違反の解決...
-
バッチファイルでの実行EXEのメ...
-
VB.netでUSBメモリの固有I...
-
EXCEL-VBAにてADOのレコードセ...
-
エクセルのメモリ使用状況/Appl...
-
「memcpy」と「strcpy」について
-
エクセルVBA 大容量CSVファイル...
-
ファイルマッピング関数で失敗
-
大容量のメモリ確保をスワップ...
-
GetAdapterInfoによりマックア...
-
C言語における再帰呼び出しの...
-
C++のCopyFileでメモリが増える
-
メモリを解放しないとどうなる?
-
クリスタルレポートでメモリ不...
-
closeとメモリの開放について
おすすめ情報