- ベストアンサー
VBAで再計算をしないようにした場合
VBAでシートのコピーをしておりますが再計算が重く回避したのですがその後の計算をどうしようか悩んでいますのでどなたかご教示ください。 数式などはいったシートのコピーは重いので計算をしないようにコピーで回避 はしています。 そこで自動計算はしてくれなくなるのでシートを使いたいとき「F9」を押すか 「ツール→オプション」で再計算させるわけですが”そういうこと”を知らな いユーザーが使うこともあることを考えどこかで自動計算を一時的に使えるよ うにすべきかなと考えてはおります。 初心者が「使いやすい」ということを考えたとき皆さんはどんな処理をするこ とを考えますか?ボキャブラリがどうしても足りないので皆さんの意見や経験 をヒントにしたいと思っていますのでお願いします。 条件は、 1.数式入りシートを何枚もコピーしている 2.ユーザーが特に計算の操作をしないで済む 3.使うシートだけ計算させればよいかもしれない(アクティブシート?) 4.シートは印刷したいので極力ボタンの表示などは避けたい 5.コマンドぼっくすは見栄えが良くないので避けたい
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
数万行にわたる行を持つSheetのコピーでないとします。 >1.数式入りシートを何枚もコピーしている 手間いらずなので、大賛成!。またユーザーにもわかりやすい。 >2.ユーザーが特に計算の操作をしないで済む 自動計算はいじらない(#2さんより)。かわる対策として、コピー中は、Application.ScreenUpdated を False にセットする。Trueに戻す事を忘れない。 個人的意見では、ユーザーへのわかりやすさ,作成手間の量,実行速度の間にはトレードオフがあって、どこかで妥協すべきだと思っています。 >3.使うシートだけ計算させればよいかもしれない(アクティブシート?) そこまでする必要があるか、要検討。 >4.シートは印刷したいので極力ボタンの表示などは避けたい 蛇足ですが、ボタンのコントロールの書式設定のプロパティーTabで、「オブジェクトを印刷する」のチェックを外せば、印刷されません。 >5.コマンドぼっくすは見栄えが良くないので避けたい ユーザーフォームに乗っける。 で、数万行のSheetの場合ですが、ExcelやVBAを使わない方向で考えるべきだと思います。
その他の回答 (3)
同じ計算を何度もさせないように、 ワーク用の行、列、セルを使ように 計算式を見直すべきでしょう。
- inadomez
- ベストアンサー率40% (9/22)
自動計算をOFFにしてしまうと、 他のExcelを開いた時にOFFにされたままになってしまったりするので、 基本はいじるべきではないと思います。 (もしかしたら、Excelのバージョンによるかもしれませんが・・・) 自動計算をいじらずにやるとしたら、以下のような方法ですかねぇ。 ・数式が重いのであれば、数式そのものを見直すべき。 ・数式入りシートを何枚もコピーしているようですが、 可能であれば、過去分は数式ではなく値にしてしまう。 ・数式ではなく、VBAで計算する。
- oldperson
- ベストアンサー率25% (4/16)
シートがアクティブになったときのイベントで再計算をさせたらどうでしょうか。 再計算で重くなるようなシートを何枚もコピーする必要性が理解できませんが(もっと良い方法があるのでは?)