重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

よろしくお願いします。

エクセルで1つのブックにAシート~Fシートまであるとします。
再計算させると、すべてのシートを再計算してしまうため時間がかかるので、マクロの自動記録を利用して「Aシート→Bシート→Cシート→Dシート→Eシート」と、必要なシートだけを順番に計算させる事で、処理時間短縮をさせる事をする事ができました。
EシートとFシートは表示させておいて、その他のA~Dシートは非表示にしました。
Eシートには、A~Dシートで計算した結果が表示されるようになっています。

ですが、A~Dシートを非表示にして作成したマクロを実行すると、エラーが出てしまい上手くできません。
A~Dシートを非表示にしていても、ブック全体を再計算させる事はできます。

非表示にしたシートをマクロで計算させるには、どのようにしたら良いでしょか?

アドバイスをお願い致します。


登録したマクロは下記のようになっています。
Sub 計算()

Sheets("Aシート").Select
ActiveWorkbook.PrecisionAsDisplayed = False
ActiveSheet.Calculate

Sheets("Bシート").Select
ActiveWorkbook.PrecisionAsDisplayed = False
ActiveSheet.Calculate

Sheets("Cシート").Select
ActiveWorkbook.PrecisionAsDisplayed = False
ActiveSheet.Calculate

Sheets("Dシート").Select
ActiveWorkbook.PrecisionAsDisplayed = False
ActiveSheet.Calculate

Sheets("Eシート").Select
ActiveWorkbook.PrecisionAsDisplayed = False
ActiveSheet.Calculate

Sheets("Eシート").Select
End Sub

A 回答 (2件)

こんにちは。



> A~Dシートを非表示にして作成したマクロを実行すると、エラーが出て
> しまい上手くできません。
> A~Dシートを非表示にしていても、ブック全体を再計算させる事はできます。

ということは、シートの表示・非表示という状態の差は再計算時に問題に
ならないということです。
また、非表示のシートは Select できません。

以上の点から対策は、「Select しなければ良い」となります。

  Sheets("Aシート").Select
  ActiveSheet.Calculate

これを Select を使わずに書けば、

  Sheets("Aシート").Calculate

です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

アドバイスして頂いた通りに修正した所、シートを非表示にしても計算させる事ができるようになりました。

的確なアドバイスありがとうございました。

お礼日時:2008/03/05 08:33

例えば表示しているもののみ再計算は以下でできます。


Sub xxx()
For Each sh In ActiveWorkbook.Sheets
If sh.Visible = True Then ActiveWorkbook.PrecisionAsDisplayed = True
Next
End Sub
でももっといい方法があるような?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!