Excel VBA заливает цветом ячейки на основе значения в другой ячейке

#vba #excel

#vba #excel

Вопрос:

Я хочу изменить свой код, чтобы заполнять ячейки только красным цветом, если значение = 0 и значение соседней ячейки в столбце L пусто.

Для ячеек со значением = 0 и значением соседней ячейки в столбце L не пусто, я хотел бы заполнить ячейку 0 шаблоном.

Я приложил скриншот того, как это должно выглядеть.

введите описание изображения здесь

 Sub Fill_Cell()

    Dim rngCell As Range

    For Each rngCell In Range("C7:K100")
        If rngCell.Value = "0" Then
        rngCell.Cells.Interior.ColorIndex = 3

        Else
        ''If value = 0 amp; adjacent cell in column L <> ''
        ''rngCell.Cells.Interior.Pattern = xlGray16
        End If
    Next

End Sub
  

Комментарии:

1. разве это не должно быть сделано с помощью условного форматирования?

Ответ №1:

Попробуйте это

 Option Explicit

Sub Fill_Cell()

Dim rngCell As Range

For Each rngCell In Range("C7:K100")
    If rngCell.Value = "0" Then
        Select Case Cells(rngCell.row, "L")
            Case Is = ""
                rngCell.Cells.Interior.ColorIndex = 3
            Case Else
                rngCell.Cells.Interior.Pattern = xlGray16
        End Select
    End If
Next rngCell

End Sub
  

Комментарии:

1. @user3596788 Конечно, без проблем! Рад, что это помогло!

Ответ №2:

Вы близки! Я бы попробовал взять ваш код и немного изменить его

 Sub Fill_Cell()

Dim rngCell As Range

For Each rngCell In Range("C7:K100")
    If rngCell.Value = "0" Then
        If Cells(rngCell.Row, 12).Value <> "" Then
            'If it is 0 and L not empty
            rngCell.Cells.Interior.Pattern = xlGray16
        else
            'If it is 0 and L is empty
            rngCell.Cells.Interior.ColorIndex = 3
        End If
    End If
Next

End Sub
  

Ответ №3:

Похоже, что пара человек победила меня:

    For Each rngCell In Range("C7:K100")
        If rngCell.Value = "0" And Cells((rngCell.Row), 12).Value <> "" Then
            rngCell.Cells.Interior.Pattern = xlGray16
        ElseIf rngCell.Value = "0" Then
            rngCell.Cells.Interior.ColorIndex = 3
        End If
    Next
  

Комментарии:

1. Нет проблем, рад использовать use. Спасибо.