Страницы: 1
RSS
Не работает УФ заданное макросом
 
Всем привет.

Ситуация такая:

макрорекрдером записал форматирование:

Код
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=ДЛСТР(СЖПРОБЕЛЫ(H6))=0"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    With Selection.FormatConditions(1).Interior
        .Pattern = xlNone
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False


Правило применяется, формула вписана, но... не работает :) Однако, если делать в той же ячейке УФ вручную, то тогда отображается уже не формула, а "Ячейка содержит пустое значение", - работает.

На английском формулу тоже писал - не работает.

Может есть у кого идеи, куда копать?
 
Выделил ячейку H6 и применил Ваш макрос. Отработало в соответствии с написанным. Если ячейка H6 пуста и Вы начинаете ввод текста, то символов не видно, пока не нажмете Enter. УФ работает.
Владимир
 
sokol92,
интересно, почему в моём случае это не срабатывает...
 
Цитата
написал:
почему в моём случае это не срабатывает
может потому, что выделена не ячейка H6? Правильно делать вообще чуть иначе:
либо Н6 закреплять(если надо сравнивать всегда с ней)
Код
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=ДЛСТР(СЖПРОБЕЛЫ($H$6))=0"
либо в формуле прописывать это динамически:
Код
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=ДЛСТР(СЖПРОБЕЛЫ(" & ActiveCell.Address(0,0) & "))=0"
Изменено: Дмитрий(The_Prist) Щербаков - 17.04.2022 10:02:37
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,
У меня по макросу там как раз динамическая ячейка. Получается,  что правило применяется к нужной ячейке, только не работает: ну то есть удаляю значение - всё равно подсвечивается. А если ставить руками, то всё гуд. Я даже не знаю куда копать.
 
Цитата
Breathe of fate написал:
Я даже не знаю куда копать.
Необходимо приложить файл с макросом, который у Вас не работает и указать, какие действия нужно произвести, чтобы убедиться в неработоспособности макроса. Всё остальное - из области гаданий...
Изменено: sokol92 - 20.04.2022 20:55:44
Владимир
 
Цитата
Breathe of fate написал:
даже не знаю куда копать
при более 150 сообщений на борту давно пора копать в сторону элементарной логики: гадалок на форуме нет. Здесь такие же люди как Вы, только у них нет Вашего файла :) Если код рабочий, но не работает - проблема явно в данных самого файла, а не в коде. А значит нужен пример Вашего файла.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,
тут с УФ что-то, в файле самом работает. В любой ячейке формула, прописываемая макросом - работает. Может быть проблема в том, что у меня 3 форматирования?

Код
                ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
                    Formula1:="=$AB" & b1, Formula2:="=$AC" & b1
                ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions.Count).SetFirstPriority
                With ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(1).Font
                    .Color = -16752384
                    .TintAndShade = 0
                End With
                With ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(1).Interior
                    .PatternColorIndex = xlAutomatic
                    .Color = 13561798
                    .TintAndShade = 0
                End With
                ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(1).StopIfTrue = False
                ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
                    Formula1:="=$AB" & b1
                ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions.Count).SetFirstPriority
                With ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(1).Font
                    .Color = -16383844
                    .TintAndShade = 0
                End With
                With ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(1).Interior
                    .PatternColorIndex = xlAutomatic
                    .Color = 13551615
                    .TintAndShade = 0
                End With
                ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(1).StopIfTrue = False
                ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
                    Formula1:="=$AC" & b1
                ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions.Count).SetFirstPriority
                With ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(1).Font
                    .Color = -16383844
                    .TintAndShade = 0
                End With
                With ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(1).Interior
                    .PatternColorIndex = xlAutomatic
                    .Color = 13551615
                    .TintAndShade = 0
                End With
                ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(1).StopIfTrue = False
                ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions.Add Type:=xlExpression, Formula1:= _
                "=ДЛСТР(СЖПРОБЕЛЫ(U" & b1 & "))=0"
                ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions.Count).SetFirstPriority
                With ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(1).Font
                    .ThemeColor = xlThemeColorDark1
                    .TintAndShade = 0
                End With
                ThisWorkbook.Sheets(ssheet2).Range("U" & b1).FormatConditions(1).StopIfTrue = False
                Application.CutCopyMode = False


То есть, если ячейка пустая, то она окрашивается заливкой следующего правила, а цвет шрифта при этом цвета пустой ячейки. Загадка.
 
Всё, разобрался.

Код
.SetFirstPriority


в этом была собака.

Всем спасибо за подсказки. Помогли эсперименты с УФ на другой ячейке.
Изменено: Breathe of fate - 22.04.2022 14:18:14
Страницы: 1
Наверх