- ベストアンサー
EXCEL2003自動再計算の範囲
再計算を自動(セルを変更すると再計算)にした場合の、再計算の範囲を(通常ブック全体となる)当該シートのみ(他シートから参照されている、参照している場合も再計算しない)にすることはできないでしょうか。 ブック全体を再計算する場合はF9などを押すこととします。 なにかそのような処理を行うVBAマクロを埋め込み、そのボタンを押すとその設定になるようなことをする他ないでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
そういう方法はありません。 でも >再計算の範囲を(通常ブック全体となる)当該シートのみ(他シートから参照されている、参照している場合も再計算しない)にすることはできないでしょうか。 >ブック全体を再計算する場合はF9などを押すこととします。 当該のシートをブックから切り出して別ブックにしてしまい(シート名タブのトコで右クリックして「移動コピー」を行う。ふつーにただ移動すれば,残した他シートとのリンクは維持します),計算したくない他シートを残したブックは閉じて運用すれば,ご希望の状況は作り出すことが出来ます。 残したシートとの計算が必要になった時は,残したブックを開いて再計算させます。 またはもちろん,全体として再計算手動で設定しておき,マクロを併用して「必要な範囲を指定してその範囲だけ都度再計算する」といった仕込みも可能は可能です。
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
>当該シートを別ブックにコピーして(リンクは維持するにしても)運用する いいえ。お話ししたのは,シートを移動してしまう手順です。 まぁでも,そういうことはしたくないのでしたら,マクロを併用するしかありませんね。 手順: 再計算を手動にしておく 注目しているシートを開く シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range) activesheet.calculate end sub ファイルメニューから終了してエクセルに戻る シートに記入すると,該当セルを当該シート内で直接参照しているセルは再計算される 別シートは再計算されない。 別シートから値を参照している当該シートのセルは「再計算される」が,別シートの値が計算されていないので変化しない。つまり別シートのセルと当該シートのセルを両方計算に使っていれば,別シート由来の値は固定のまま,当該シートの値が変わっていればそれだけが反映される。 #補足 「必要なセルを都度再計算する」とお話しした部分について詳細の補足がありませんでしたので,雑ぱくなマクロになります。あとは適宜,自力で応用なさってください。
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルの内部処理(エクセルーインサイド)の詳細に絡むところで、私は十分知識は無い。 しかし http://www.big.or.jp/~seto/vbaref/vbaref8.htm の記事にあるように(Object).CalculateのObjectはシートやRange(セル範囲)を指定できるようだ。 硬貨の及ぶ対象のObjectはApplication、Book、Sheet、Rangeその他のどれなのかをVBAでは、いつも意識する必要がある。 ーー 個人で出来るテスト ツールーオプションー計算方法ー手動 に設定しておく。 例えばA1:A10に対しB1に =A1+2など式を入れてB10まで式を複写しておく。 B1の値は、B1に式をいれた際には計算される。 そこでA1などのセルの値を変更する。 結果の各B列セルの値の見てくれは変わらない。 同じことをD,E列でやる。D1にセルの値を入力し、E1に=D1+10などの式を入れて、式をE10セルまで複写しておく。 D2に値をを入れても見た目変わらない。 しかしVBAで Sub セル範囲の再計算2() ActiveSheet.Range("B1:B10").Select Selection.Calculate End Sub を入れて実行する。 B列の値は見た目変わるが、E列の値は当面変わらない。 操作でF9を押すと関係全セルで算される。 しかし、その後まだツールーオプションー計算方法ー手動の当初の設定効果は続いている。 それは、式で参照しているどこかのセルの値を変えても、参照している式の在るセルの結果が変わらないことで、判る。
お礼
いろいろ試していただきありがとうございます。 当初の目的では、 ActiveSheet.Range("fullsize").Select #アクティブシート選択の意味 Selection.Calculate End Sub とでもして、常にはアクティブシートだけ自動計算するような感じになるのでしょうが、このままでは、自動計算にならず、毎回このマクロを実行することになり、手動とほとんど変わらないことになりそうです。 マクロでの扱いの参考になりました。
お礼
ご返事ありがとうございます。そういう方法の無いことはわかりました。 このブックの処理は1ファイルだけにまとめたいのが趣旨なので、当該シートを別ブックにコピーして(リンクは維持するにしても)運用するのでは、煩雑さがネックになりそうです。でもいろいろアイデアがあるものですね、参考になりました。