Возник вопрос, на работе нужно написать макрос с таким условием, чтобы текст в ячейке в которую заполнялась "формула" становился определенным цветом автоматически, а "константы" были черные (то есть их в условие вписывать не надо).
P.s условное форматирование не подойдет
Как тестировать макрос. Перед открытием файла, щёлкните по нему правой кнопкой мыши - Свойства - поставьте галочку "Разблокировать".
После открытия файла разрешите запуск макросов.
Сейчас макрос реагирует только на ячейку A1 (в коде макроса указан адрес A1).
В ячейку A1 записывайте формулу или константу и будет изменяться закраска текста в этой ячейке.
Запускаю файл, все разрешил, но макрос не работает, вместо формулы ввожу константу, цвет красный.
Как прописать на весь лист этот макрос а не только на ячейку?
Вот я записал в ячейку A1 константу, текст стал чёрным.
Не знаю, почему у вас не работает. Предположу, что вы не разрешили макросы в книге.
Цитата:
Как прописать на весь лист этот макрос а не только на ячейку?
Сначала надо разобраться, почему у вас имеющийся макрос не работает. Потом можно обсудить этот вопрос.
Да. действительно в самой книге не был разрешен доступ. С Вашим файлом теперь работает, как перенести на мой и сделать на весь лист?
("A1:XFD1048576") прописываю это, не работает что то
я уже все синтаксические формы перепробовал, наверное не понимаю, как макрос считывает диапазон
Макрос нужно поместить в модуль листа, на котором должен срабатывать макрос. На скриншоте показано, в каком модуле сейчас находится макрос.
И у своего файла сделайте формат xlsb или xlsm, чтобы в файле могли находиться макросы. Формат xlsb более быстрый при работе с большим количеством данных.
Чтобы макрос срабатывал на всём листе, используйте этот макрос:
Макрос
Private Sub Worksheet_Change(ByVal Target As Range)
' Если изменения произошли в нескольких ячейках, то ничего не делаем.
If Target.Cells.CountLarge = 1 Then
ElseIf Target.Cells(1, 1).MergeArea.Address = Target.Address Then
Else
Exit Sub
End If
' Если в ячейке формула.
If Target.HasFormula Then
Target.Font.Color = 255
' Если в ячейке константа или пусто.
Else
Target.Font.Color = 0
End If
End Sub
Огромное спасибо!