Заполнение цвета, используя VBA, Условный на значении ячейки

Я надеюсь окрашивать, заполняют ряд клеток (C2:C7) в Excel на основе текст, отобранный в клетке (будет выпадающее меню, две из ценностей, являющихся "SD" и "CS"). Вот мой код до сих пор:

Sub ChangeColor () Затемните rCell Как Диапазон

With Sheet1
For Each rCell In .Range("C2:C7")

If rCell.Value <= SD Then
rCell.Interior.Color = vbRed
ElseIf rCell.Value <= CS Then
rCell.Interior.Color = vbGreen
Else: rCell.Interior.Color = vbYellow
End If
End With

End Sub

Мне говорят, что есть ошибка компиляции: Конец С без С

Я просто начинаю в VBA, таким образом, кто-то может, пожалуйста, сказать мне, что я сделал неправильно?

1
nl ja de
Условное форматирование является также способом сделать это: D, пока вы управляете им правильно, это не сделает лист большим..
добавлено автор bonCodigo, источник
Если you' ре используя Excel 2007 или выше, можно сделать это с Условным форматированием.
добавлено автор Peter Albert, источник
Я могу сделать это, используя условное форматирование, однако есть 5 имен в выпадающем списке, и я также хочу сделать, другим вещам нравится основной момент определенные ряды с определенным цветом, если снижение вниз называет, отобран. Следовательно я попробовал VBA.. какие-либо предложения?
добавлено автор Clatty Cake, источник
С наилучшими пожеланиями, будет иметь игру!
добавлено автор Clatty Cake, источник

2 ответы

Чтобы зафиксировать ваш код, необходимо вставить Затем заявление. перед Конец С линия. Кроме того, это - хорошая практика, чтобы использовать углубление, чтобы визуально видеть различные кодовые блоки. В вашем случае это было бы похоже на это:

Sub YourSub
    With Sheet1
        For Each rCell In .Range("C2:C7")
            If rCell.Value <= SD Then
                rCell.Interior.Color = vbRed
            ElseIf rCell.Value <= CS Then
                rCell.Interior.Color = vbGreen
            Else
                rCell.Interior.Color = vbYellow
            End If
        Next rCell
    End With
End Sub

Also, consider to use Conditional Formatting instead of VBA here - it will do the same, but much easier!

5
добавлено
Умный Индентер является полезным дополнением (работы с 2007 & 2010 также, проверенный личным использованием), который поможет вам код заявки помочь сделать его более удобочитаемым
добавлено автор SeanC, источник
+1 и для - решение и для конусовидный. предложение f.)
добавлено автор Peter L., источник
Согласитесь - вполне полезный инструмент! Хотя I' d предлагают сделать хорошей привычкой вручную заказать правильно во время кодирования (так, чтобы ошибки могли быть замечены во время кодирования) - и только используйте Умный Индентер, чтобы зафиксировать ужасный, закодировали/проверили собственный код...
добавлено автор Peter Albert, источник

Я не уверен, работает ли это, но можно попробовать это, потому что, когда вы печатаете в сценарии "Для команд" тогда, необходимо напечатать затем. И "Для" более используется, чтобы создать петли:

Sub ChangeColor()
    Dim rCell As Range
    With Sheet1
    For Each rCell In .Range("C2:C7")
        If rCell.Value <= SD Then
            rCell.Interior.Color = vbRed
        ElseIf rCell.Value <= CS Then
            rCell.Interior.Color = vbGreen
        Else rCell.Interior.Color = vbYellow
        End If
    Next
    End With
End Sub
1
добавлено