2022年5月11日【ID:0】
【6】要望ボックス
特定の色を数えるユーザー定義関数について、色を変えたタイミングで反映させる方法はありますか?
(参考:https://www.youtube.com/watch?v=kVaO0IGirGE )
【回答】
色を変更する際に、他のセルからコピペするなどの場合は自動更新されますが、色を変更するだけでは自動更新されないです。
関数が更新されるタイミングは、引数に対して変更があった場合になります。
ただ、色を変更するだけでは、引数が変更されたとはならないみたいです。
上記の内容を踏まえて思いつく対策を2つ挙げますと以下になります。
※他にもいろいろあると思います。
①余分な書式もコピーされてしまいますが、色付けを書式のコピーなどにより行う
②リアルタイムの更新ではありませんが、変更後に別のセルを選択したと同時に更新する
「②」の場合は、対象のシートモジュール、もしくはブックモジュールにて特定のイベントプロシージャに以下の内容を記述する必要があります。
Application.CalculateFull
※「Application.Calculate」では計算されません。
「②」について、特定のシートのみに自動更新を適応する場合は、シートモジュールの「SelectionChange」を用います。
こちらは特定のシートに対し、セルの選択が変更されたタイミングで実行されるイベントプロシージャになります。
上記の画像のように選択して、下記の内容「Application.CalculateFull」を追記します。
これだけで完了です。
「Application.CalculateFull」ではなく「Application.Calculate」の場合、色変更では反応してくれないです。
なので、「Application.CalculateFull」にして、すべてに対して更新をするようにしています。
次にブック全体に自動更新を適応する場合は、ブックモジュールの「SheetSelectionChange」を用います。
こちらはシートモジュールで説明した内容と同じで、セルの選択が変更されたタイミングで実行されるイベントプロシージャになります。
違いは、すべてのシートの適応される点です。
上記の画像のように選択して、下記の内容「Application.CalculateFull」を追記します。
これだけで完了です。