2017-01-19 8 views
0

Очень часто мне нужно создавать условные правила форматирования на моих листах excel, а не всегда в одном диапазоне, чтобы отформатировать цвет текста в зависимости от того, что написано.Создайте условный форматирующий макрос для текстового значения в Excel

Наиболее распространенной ситуацией является поворот всех ячеек в диапазоне, имеющих текст «Эффективный» зеленый и полужирный, и «Неэффективный» красный и полужирный.

Я попытался создать этот макрос, используя функцию «Запись макроса» на вкладке «Разработчик», но это не сработало, код был пустым.

Поскольку у меня есть нулевые знания в VBA, мне было интересно, может ли кто-нибудь помочь мне создать этот макрос.

Определения:

  • Там нет фиксированного диапазона, он должен захватить выбранный диапазон;
  • Формат на основе текста, если «Эффективный» зеленый и полужирный, если «Неэффективен» красный и полужирный.
  • Только для одного листа.

[Решено]

Sub EffectiveNot() 
' 
' EffectiveNot Macro 
' 
    Dim rStart As Range 
    Set rStart = Selection 
    Selection.FormatConditions.Add Type:=xlTextString, String:="Effective", _ 
     TextOperator:=xlContains 
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 
    With Selection.FormatConditions(1).Font 
     .Bold = True 
     .Italic = False 
     .Color = -11489280 
     .TintAndShade = 0 
    End With 
    Selection.FormatConditions(1).StopIfTrue = False 
    Selection.FormatConditions.Add Type:=xlTextString, String:="Not effective", _ 
     TextOperator:=xlContains 
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 
    With Selection.FormatConditions(1).Font 
     .Bold = True 
     .Italic = False 
     .Color = -16776961 
     .TintAndShade = 0 
    End With 
    Selection.FormatConditions(1).StopIfTrue = False 
End Sub 

ответ

1

Любой шанс, что вы проверили ваши ThisWorkbook -модуль? Макро-рекордер добавляет новый пустой модуль каждый день, когда вы его запускаете, а затем выгружает код там ...

Это в основном то, что приносит макрорекордер, после того как я немного его очистил. Не стесняйтесь обменять Selection на объект диапазона, более подходящий для вашего использования.

Option Explicit 

Sub format() 

    With Selection 
     With .FormatConditions 
      .Delete 

      With .Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Not Effective""") 
       With .Font 
        .Color = vbRed 
        .Bold = True 
       End With 
       .StopIfTrue = False 
      End With 

      With .Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Effective""") 
       With .Font 
        .Color = vbGreen 
        .Bold = True 
       End With 
       .StopIfTrue = False 
      End With 
     End With 
    End With 

End Sub