У Майкла есть элемент управления формой (флажок), связанный с ячейкой A1. Он может поместить формулу в ячейку A1, которая принимает значение True или False, и флажок отражает этот результат. Однако, если кто-то щелкнет флажок, чтобы изменить его, формула в ячейке A1 будет заменена явным значением True или False. Майклу нужна формула в ячейке A1 для управления флажком, но ему также нужно, чтобы пользователь мог переключать флажок, не перезаписывая формулу. Он задается вопросом, возможно ли это.

Короче говоря, это невозможно. Microsoft предусмотрела флажки для управления значением в ячейке, а затем вы могли ссылаться на эту ячейку в других формулах. Они никогда не предполагали, что связанные ячейки содержат формулы.

При желании вы можете попробовать создать макрос, который отслеживает ячейку и, если он изменяется, обновляет другую ячейку. Например, вы можете привязать свой флажок к другой ячейке (например, ячейке B1), чтобы формула в ячейке A1 не затрагивалась при использовании флажка. Затем вы создаете макрос обработчика событий, который проверяет все, что находится в ячейке A1, и, если он изменяется, макрос изменяет то, что находится в ячейке B1. Это изменение в ячейке B1 вызовет изменение флажка.

Другой подход на основе макросов — использовать макрос для записи формулы в ячейку A1. Это простой пример такого макроса:

Sub CheckBoxState()

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

End Sub

Если вы назначите этот макрос элементу управления флажком, то, когда человек щелкнет флажок, произойдут две вещи. Сначала состояние флажка записывается в ячейку A1, перезаписывая все, что там есть. Во-вторых, выполняется макрос, записывающий формулу обратно в ячейку A1. Обратите внимание, что формула (как определено в этом макросе) учитывает значение, которое только что было сохранено в ячейке A1. Таким образом, если элемент управления флажком записывает True в ячейку A1, макрос вставляет в ячейку следующее:

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

Снова установите флажок, значение, введенное в ячейку, изменится на «Ложь», а формула, помещенная в ячейку, изменится. Конечно, вам нужно будет изменить макрос, чтобы формула, которую он вводит в ячейку A1, отражала формулу, которую вы действительно хотите там.

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (113) применим к Microsoft Excel 2007, 2010, 2013 и 2016.