• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:手動計算時の条件付書式判定)

手動計算時の条件付書式判定とは?

このQ&Aのポイント
  • 手動計算時の条件付書式判定とは、Excelのセルの値が特定の条件を満たす場合に、セルの書式(背景色や文字色など)を自動的に変更する機能のことです。
  • 具体的には、条件付書式を設定したセルの値が指定した条件(例えば、特定の値より大きい、特定の値より小さいなど)を満たす場合に、書式が適用されます。
  • 質問文の場合、C2セルの条件付書式は、「セルの値が500より大きい場合に文字色を赤にする」という設定になっています。しかし、手動計算の場合は、実際にセルの値が変わるまで書式が適用されないため、色が変わらない可能性があります。マクロを使用することで自動計算を行うことができ、正しく条件付書式が判定されるようになります。

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

  • ベストアンサー
回答No.1

こんにちは。 > Calculate この記述は、sheet.Calculate メソッドで モジュールの親シートすべてを再計算させていますが、 条件付き書式の再計算をさせるには、 一旦そのセルを再計算させてからでないと反映されません。 (たぶん記述を書いた後の1回めだけは反映される筈ですが) なので、直接再計算させたいセルだけを range.Dependents プロパティ(rangeを参照している参照先セル範囲)で捉えて、 (sheet.Calculate メソッドではなく) range.Calculate メソッドで、 セル範囲を再計算させます。 Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Row > 1 Then Exit Sub   If Target.Column > 3 Then Exit Sub   Target.Dependents.Calculate End Sub これなら一発で条件付き書式の再計算まで反映されます。 (※sheet.Calculate を直前に実行後、コード書換えて試した場合は  2回目の再計算以降から正しく反映されるようになります) sheet.Calculate メソッドを実行させる必要があるなら、 range.Calculate メソッドの直後に実行させればいいです。

3620313
質問者

お礼

回答ありがとうございます。Target.Dependents.Calculate でばっちりでした。その様な制約があるのですね。 私のマクロでもセル自体の値は変更されるので誤解しました。

その他の回答 (1)

回答No.2

#1です。説明不足がありました。 #1の記述は、  _Change イベントが書かれている親シートがアクティブな状態で  A1:C3の値が変更(確定)された場合、 という前提で書かれています。 もしも、マクロからの処理で、他のシートがアクティブな状態で このイベントが呼び出された場合、   Target.Dependents.Calculate はエラーになります(range.DependentsはActiveSheetでしか機能しない)。 対策としては、セル範囲を決め打ちして再計算させるしかありませんので、   Cells(2, "C").Calculate と書いておいた方が、 却ってトラブルフリーなのかも知れません。 (もっとも、最適化を図るなら本来は、  <他のシートがアクティブな状態でこのシートのセル値を変更させる>マクロ  の側で、セル値を変更させた後にrange.Calculateさせて、  二次的なイベント(_Change イベント)を実行させないように書くのが  正しいやり方です。)   Target.Dependents.Calculate か   Cells(2, "C").Calculate 実際の必要の如何に応じて、どちらかが正解、という意味ですので、 違いを理解してから選んでみてください。

3620313
質問者

お礼

追加の説明までいただきありがとうございます。 条件付書式は、同一シートで複数セルに使用します。 またこの条件付き書式判定してから自動のマクロを動作させる構成なので、Target.Dependents.Calculate でばっちりです(*^。^*)

関連するQ&A