Я видел, как многие пользователи задавали вопросы, пытаясь изменить цвета ячеек с помощью пользовательских функций. Мне всегда казалось, что это невозможно сделать. Мое понимание заключалось в том, что пользовательская функция не может изменять какие-либо свойства ячейки, кроме значения ячейки, содержащей формулу. Субботы - это то, что сами меняют ячейки.Пользовательская функция для изменения цвета ячейки
Однако, когда вы играете с некоторым кодом для проверки этого, я обнаружил, что это не всегда так.
Используя простой код:
Function ColorCell(rng As Range)
If rng.Value = 1 Then
ColorCell = False
Else
ColorCell = True
rng.Interior.ColorIndex = 3
End If
End Function
Если я вхожу функцию в клетке, я в состоянии добиться ожидаемых результатов, клетки не меняют цвет. Однако, если я использую кнопку «Формулы»> «Вставить функцию» и перейдите к моей формуле, чтобы вставить ее таким образом, она делает цвет целевых ячеек.
Как это возможно, и почему функция ведет себя по-разному, когда вводится по-разному?
EDIT: это был протестирован с помощью Excel 2007
Я не знаю ответа на это, но заметьте, что если вы измените значения ячейки, это не будет измените окраску даже в нижнем корпусе. Поэтому, если вы меняете ячейку A11 на 1, ячейка остается красной. – OpiesDad
Правильно, обновление самой функции не происходит. За исключением случаев, когда вы возвращаетесь и повторно используете «Insert Function», он * будет * обновлять значение/цвет. – TMH8885
'Я обнаружил, что это не всегда так.« Правда :) Вы видели [Это] (http://stackoverflow.com/questions/23433096/using-a-udf-in-excel-to-update-the- рабочий лист) –