- 締切済み
マクロを組んだエクセルの動作が遅い
OS: Windows 2000 マクロを組んだエクセルの動作が非常に、異常に遅いのです。 マクロを組んでいないエクセルはすぐに起動でき、すぐに印刷、終了ができるのですが、 マクロを組んでいるエクセルは起動するのに1~2分、印刷も終了も同じく遅いのです。 また、マクロを組んでいるエクセルを開く際に、タスクマネージャでCPU使用率を見て みると、必ず100%になっているんです(マクロを組んでないものは100%までいかない)。 日に日に動作が遅くなっているように感じ、とても困っています。 ご教授ください。m(__)m
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- coldblade
- ベストアンサー率20% (2/10)
- Wendy02
- ベストアンサー率57% (3570/6232)
そういえば、時と共にExcelのスピードが遅くなる原因として、もう1つありますね。 C:\Documents and Settings\[ユーザー名]\temp\ の中です。ここの場所を可能なものは全部削除して構いません。 ここに残骸が溜まりやすいのです。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 まさか、Chk101_Click() というようなコードが、チェックボックス 100個とか? 私は、そのようなコードは書きませんが、コード的には、標準的な内容に思えます。 >他の人のパソコンで同じファイル(マクロを組んである)を開いてみると、スムーズに開くんです。 後は、アンチウィルスの問題や、Excelのxlbファイル、アドイン、個人用マクロブック(Personal.xls)などが原因のこともあります。 また、 >何ヶ月か前までは普通に起動していたんです。 ということでしたら、ブックの中のシートをひとつずつコピーして(オブジェクト+シートモジュールも一緒に行きます)、新しいブックにして使ってみるという方法もあります。マクロは、エキスポート・インポートでもよいし、コピー&ペーストで貼り付けてもよいと思います。 今のところ、はっきりした原因と対策は分かりませんので、手当たりしだいにやってみるしかありません。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 マクロを組んだExcelで遅くなることがあるのですね。ある人のマクロを見せられて、「さもありなん(そういうこともある)」と思いました。ご質問者さんが、必ずそうだというわけではありません。 記録マクロ+数式多数 のマクロではありませんか?もし、そうなら、申し訳ないのですが救いはないです。 そういう、マクロは捨てるしかありません。基本の勉強のしなおしです。 もともと、マクロをなぜ設置するかというと、ワークシートのメモリ消費を減らすためにもあるのです。例えば統計で配列数式などの難しい数式でもマクロで入れるのならサクサクと入ります。それが、逆になってしまっている人がいます。 マクロというのは、そのブックの起動時に、中間言語に翻訳されながら、展開していきます。ところが、マクロの中に書かれたワークシートの直接のセル群は、常にワークシートとの関連性があるので、どんどんメモリ消費して膨れ上がってしまいます。私が言った内容なら、それは、直しようがないのです。 違うのでしたら、少し、マクロの数行を出してみてください。
- hana-hana3
- ベストアンサー率31% (4940/15541)
マクロの有無によって動作が変化する事は無いと思います。 但し、何らかのイベントによってマクロが実行されるのであれば、マクロの実行方法等を再検討する必要が有るでしょう。 マクロ以外で時間が掛る場合としては、膨大な数の計算式がセルにある場合には再計算が常に行われる事になるので、動作に時間が掛るようになります。 どのようなマクロを組んだのか解りませんが、マクロが動作しないように(エクセルファイルをコピーして、マクロモジュールを削除する等)した場合などと比較するなり、個々のマクロの実行状態をチェックするなりして、問題点を洗い出すしか無いと思います。
補足
マクロを組んでいないファイルはスムーズに開くのですが、マクロを組んだファイルは起動が遅いのです。 また、他の人のパソコンで同じファイル(マクロを組んである)を開いてみると、スムーズに開くんです。 そのファイルに問題があるのではなくて、自分が使っているパソコンに問題があるのかもしれません。
補足
自分で組んだマクロではなく、また、何ヶ月か前までは普通に起動していたんです。 だんだんと起動するのが遅くなってきて、今に至ってます。 マクロは ' ■■■■■ 決裁者 ■■■■■ ' ■支社(本部)長 Private Sub Chk101_Click() Call Chk_Click(Chk101, "Y13:AI13") End Sub ' ■副支社(副本部)長 Private Sub Chk102_Click() Call Chk_Click(Chk102, "AJ13:AW13") End Sub ' ■次長 Private Sub Chk103_Click() Call Chk_Click(Chk103, "AX13:BC13") End Sub ' ■部長 Private Sub Chk104_Click() Call Chk_Click(Chk104, "BD13:BI13") End Sub ' ■支店長 Private Sub Chk105_Click() Call Chk_Click(Chk105, "BJ13:BP13") End Sub (中略) ' ■ラベル処理(セルの塗潰し、フォント変更) Private Sub Lbl_Fill(ByRef objChk As Object, ByVal strRange As String, ByVal bolBool As Boolean) If bolBool = True Then Range(strRange).Interior.ColorIndex = 6 objChk.Font.Name = "MS Pゴシック" objChk.Font.Bold = True objChk.Font.Size = 13 objChk.BackColor = &HFFFF& Else Range(strRange).Interior.ColorIndex = 0 objChk.Font.Name = "MS Pゴシック" objChk.Font.Bold = False objChk.Font.Size = 12 objChk.BackColor = &HFFFFFF End If End Sub と、こんな感じにチェックボックスがいくつかあって、チェックした項目を黄色く塗りつぶすマクロです。