#excel #vba #background-color
Вопрос:
Я пытаюсь изменить приведенный ниже код. Лист от 1 до 8, может быть, меньше. Лист 1 = столбец A содержит число, столбец B содержит числа, которые группируют столбец A. Столбец A Столбец B 11200 3 11202 3 12500 4 12502 4 и более строк вниз, так что четное число в столбце B = цвет синий, нечетное число ColumnB = цвет зеленый Необходимо применить больше цветов, поэтому мне нужно ровно 1 = желтый цвет, isodd 1= коричневый цвет.
Sub Color()
Dim CvbRed, cYellow, cGreen, cBlue As Integer
For Each cell In Range("B5:B" amp; Range("A" amp; Rows.Count).End(xlUp).Row)
Select Case Color
Case IsEven
Range("A5:A").Cells.Interior.Color = vbRed
cRed = cRed 1
Case IsOdd
Range("A5:A").Cells.Interior.Color = vbYellow
cYellow = cYellow 1
Case IsEven 2
Range("A5:A").Cells.Interior.Color = vbGreen
cGreen = cGreen 1
Case IsOdd 2
Range("A5:A").Cells.Interior.Color = vbBlue
cBlue = cBlue 1
End Select
Next cell
End Sub
Пожалуйста, проверьте картинку выше в этом посте, столбцу A нужны только цвета, в зависимости от того, когда в столбце B четный, нечетный, четный 1, нечетный 1.
Комментарии:
1. Большое спасибо CDP1802, этот код сэкономит много времени. Пожалуйста, проверьте картинку выше в этом сообщении, столбцу A нужны только цвета, в зависимости от того, когда столбец B имеет четный, нечетный, четный 1, нечетный 1.
2. Смотрите Обновленный ответ
3. Большое вам спасибо CDP1802 работает идеально.
Ответ №1:
Используйте мод
Option Explicit
Sub ColorMacro()
Dim wb As Workbook, cell As Range, lastrow As Long
Dim n As Integer, i As Integer
Dim arColor ' odd-green, even-blue, odd 1-brown, even 1-yellow
arColor = Array(RGB(128, 255, 128), _
RGB(128, 128, 255), _
RGB(200, 150, 100), _
RGB(255, 255, 128))
Set wb = ThisWorkbook
For n = 2 To wb.Sheets.Count
With wb.Sheets(n)
lastrow = .Cells(.Rows.Count, "B").End(xlUp).Row
For Each cell In .Range("B2:B" amp; lastrow)
i = (cell.Value - 1) Mod 4
cell.Offset(,-1).Interior.Color = arColor(i)
Next
End With
Next
End Sub
Комментарии:
1. Большое вам спасибо CDP1802 работает идеально.