Michaelには、セルA1にリンクされたフォームコントロール(チェックボックス)があります。彼は、TrueまたはFalseに解決される数式をセルA1に配置でき、チェックボックスはその結果を反映します。ただし、誰かがチェックボックスをクリックして変更すると、セルA1の数式は明示的なTrueまたはFalseで上書きされます。 Michaelは、チェックボックスを制御するためにセルA1の数式を必要としますが、ユーザーが数式を上書きせずにチェックボックスを切り替えることができるようにする必要もあります。彼はこれが可能かどうか疑問に思います。

要するに、これは不可能です。 Microsoftは、セルの値を制御するためのチェックボックスを意図していたので、他の数式でそのセルを参照できます。リンクされたセルに数式を含めることは意図されていませんでした。

必要に応じて、セルを監視するマクロを作成し、変更された場合は別のセルを更新することもできます。たとえば、チェックボックスを別のセル(セルB1など)に関連付けて、チェックボックスを使用してもセルA1の数式が影響を受けないようにすることができます。次に、セルA1にあるものをすべて調べるイベントハンドラマクロを作成し、それが変更された場合、マクロはセルB1にあるものを変更します。セルB1でのこの変更により、チェックボックスの変更がトリガーされます。

別のマクロベースのアプローチは、マクロを使用して数式をセルA1に書き込むことです。これはそのようなマクロの簡単な例です:

Sub CheckBoxState()

Range("A1").Formula = "=IF(" & Range("A1") & _       ",""CHECKED"",""NOT CHECKED"")"

End Sub

このマクロをチェックボックスコントロールに割り当てると、ユーザーがチェックボックスをクリックすると、2つのことが起こります。まず、チェックボックスの状態がセルA1に書き込まれ、そこにあるものはすべて上書きされます。次に、マクロが実行され、数式がセルA1に書き戻されます。数式(このマクロで定義されている)では、セルA1に格納されたばかりの値が考慮されていることに注意してください。したがって、チェックボックスコントロールがセルA1にTrueを書き込むと、マクロは次のものをセルに詰め込みます。

=IF(TRUE,"CHECKED","NOT CHECKED")

チェックボックスをもう一度クリックすると、セルに入力された値がFalseに変わり、セルに配置された数式が変更されます。もちろん、マクロを変更して、セルA1に強制する数式が、実際に必要な数式を反映するようにする必要があります。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(113)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。