• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルの再計算について)

エクセル再計算の反復計算チェックの保存方法とは?

このQ&Aのポイント
  • エクセル97を使用して、条件に応じてSUMIF関数の結果を反映する目的の式を作成しました。しかし、循環参照エラーが発生し、反復計算のチェックがオフになります。
  • マクロの知識がないため、反復計算で乗りきろうとしていますが、保存時に反復計算がオフになるため、エラーメッセージが表示されます。
  • 保存時に反復計算のチェックを有効にする方法について、ご教示いただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

>[ツール]-[オプション]のチェックを保存できる方法はないのでしょうか。 マクロで可能ですが・・・ ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示します。 プロジェクトエクスプローラのThisWorkbookをダブルクリック。出てきたコードウインドウに下記マクロをコピーして貼り付けます。 'このマクロが、このBookを立ち上げた時に自動的に実行されます。 Private Sub Workbook_Open()   With Application     .Iteration = True    '反復計算をONにします     .MaxIterations = 50   ' これは設定の例です(最大反復回数)     .MaxChange = 0.003    ' これは設定の例です(変化の最大値)   End With End Sub 参考に、循環参照しない方法をマクロで考えてみました。Sheet1で行う例です。C3に算式は入力しません。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示します。 プロジェクトエクスプローラのSheet1をダブルクリック。出てきたコードウインドウに下記マクロをコピーして貼り付けます。 質問は例だと思いますので、変更がありそうな箇所は定数として定義するようにしています。 A列が『1』の時、B列を集計するSumIfの例です。 ここから ↓ Const cCell_A = "A1"   '比較セル1 Const cCell_B = "B1"   '比較セル2 Const oCell = "C3"    '出力セル Const jArea = "A2:A10"  'SumIfの評価の対象となるセル範囲 Const sArea = "B2:B10"  'SumIfの合計計算対象となるセル範囲 Private Sub Worksheet_Change(ByVal Target As Range)   Dim cArea As Range  '評価に関係するセルを結合させたセル範囲   Set cArea = Union(Range(cCell_A), Range(cCell_B), _              Range(jArea), Range(sArea))   If Not Intersect(Target, cArea) Is Nothing Then     'C3セルに出力する条件に関係するセルに変更があったら     If Range(cCell_A) = Range(cCell_B) Then       'この例では、A2:A10が『1』の対応するB列を集計している       Range(oCell) = Application.SumIf(Range(jArea), "=1", Range(sArea))     End If   End If End Sub

weiyien
質問者

お礼

早速の御回答、有難うございます。 すぐに再計算のマクロの方を試してみたところ、エラーメッセージが消えました! 実は、作表したものは私が使うものではなく、エクセルそのものの知識があまり無い方の為の「データ入力さえすれば自動計算しちゃうよソフト」のような感覚で作成した物なので、エラーやメッセージは極力控えたいと思っていました。 私自身がマクロに対する知識が無いため、自力での作成にてこずっていたところでしたので、大変参考になりました。 後者のマクロについても、時間のある時にゆっくりと勉強方々理解をしてみたいと思います。 急いでいたところでしたので大変助かりました。改めてどうもありがとうございました!!

関連するQ&A

専門家に質問してみよう