У меня есть код VBA в электронной таблице Excel. Он используется для установки цвета шрифта и фона в ячейке на основе значения в этой ячейке. Я делаю это в VBA вместо «Условное форматирование», потому что у меня более 3 условий. Код:Установите цвет фона для фиксированного диапазона ячеек
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, d As Range, fc As Long, bc As Long, bf As Boolean
Set d = Intersect(Range("A:K"), Target)
If d Is Nothing Then Exit Sub
For Each c In d
If c >= Date And c <= Date + 5 Then
fc = 2: fb = True: bc = 3
Else
Select Case c
Case "ABC"
fc = 2: fb = True: bc = 5
Case 1, 3, 5, 7
fc = 2: fb = True: bc = 1
Case "D", "E", "F"
fc = 2: fb = True: bc = 10
Case "1/1/2009"
fc = 2: fb = True: bc = 45
Case "Long string"
fc = 3: fb = True: bc = 1
Case Else
fc = 1: fb = False: bc = xlNone
End Select
End If
c.Font.ColorIndex = fc
c.Font.Bold = fb
c.Interior.ColorIndex = bc
c.Range("A1:D1").Interior.ColorIndex = bc
Next
End Sub
Проблема в строке «c.Range». Он всегда использует текущую ячейку как «A», а затем направляет четыре ячейки справа. Я хочу, чтобы он начинался в «реальной» ячейке «A» текущей строки и переходил в «реальную» ячейку «D» текущей строки. В принципе, я хочу фиксированный диапазон, а не динамический.
Просто убедитесь, что вас беспокоит допустимое количество условий, потому что это будет доставлено не только пользователям с xl2007? – guitarthrower
Мы используем Excel 2003, который, как представляется, допускает только три условия. У пользователя было 6 условий для проверки против включения диапазона дат, который они не могли получить в работе мастера. –