• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セル値のシート参照)

マクロからブックを開く2のおかしな内容の理由と対策内容

このQ&Aのポイント
  • セル値のシート参照がうまく動作しない問題を解決するために、マクロを使用して日付けに相当するシートを表示させようとしています。しかし、マクロ「マクロからブックを開く2」を実行すると、Q2セルの日付けを変えても1つ前の日付けで参照されます。これは、「t = Range("Q3").Value」の部分で更新されていないためです。なぜなのでしょうか?
  • 対策として、マクロを分割する方法があります。マクロ「マクロからブックを開く」では、「t = Range("Q3").Value」の部分でデバッグ用に「Debug.Print t」を追加することで、更新されていることが確認できます。そして、別のマクロ「cal」では、「t = Range("Q3").Value」を再び宣言し、更新された値を使用してシートを表示します。これにより、正しく動作するようになります。
  • マクロ「マクロからブックを開く2」のおかしな内容の理由は、マクロ内で変数「t」が2度宣言されているためです。最初の宣言で値が代入されるため、2回目の宣言では更新されていない値が使用されてしまいます。この問題を解決するためには、マクロを分割し、新たに「cal」というマクロを作成し、そこで値を再宣言して使用する必要があります。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.1

手動計算ですのでマクロを実行する時点ではQ3は計算されていませんから先に計算してtに代入しないと前回の計算結果がtに代入されます。 順番は Calculate t = Range("Q3").Value Debug.Print t じゃないでしょうか。 マクロを分割したほうは呼び出すcalの手前でCalculateされますのでtには再計算された結果が代入されて期待した結果が得られます。

3620313
質問者

お礼

回答ありがとうございます。 なるほど。単純な思い込みでした。助かりました(^.^)