Я написал простой цикл for, который перебирает диапазон данных. Моя таблица данных состоит из целых чисел 1 - 15 с именем «Данные». Начальная точка называется «Точка_1», а конечная точка называется «Точка_2».
Код ниже, аннотированный для ясности. По сути, это просто переключение подсветки на ON, когда ячейка соответствует Point_1, и подсветка до тех пор, пока она не переключится обратно на OFF, когда ячейка соответствует Point_2.
Sub HighlightRange()
Dim cel As Range
Dim dataRange As Range
Dim highlighting As Boolean
highlighting = False
With Application.ActiveWorkbook.Sheets("Sheet1")
Set dataRange = .Range("Data") 'This is your data range. I named mine 'Data'
For Each cel In dataRange
'Check for beginning or end values
If cel = .Range("Point_1").Value Then 'This is your starting value. I named mine 'Point_1'
highlighting = True
ElseIf cel = .Range("Point_2").Value Then 'This is your ending value. I named mine 'Point_2'
highlighting = False
End If
'While highlighting is activated, highlight the current cell
If highlighting = True Then
cel.Interior.ColorIndex = 5
End If
Next cel 'Check all cells in dataRange
End With
End Sub
Примечательно, что конечная точка не выделена. Однако вы можете переместить оператор ElseIf, который снова выключает подсветку, до конца цикла for после команды highlight. Это отключит подсветку ПОСЛЕ подсветки Point_2, а не только перед этим. Код для этого случая ниже.
Sub HighlightRange()
Dim cel As Range
Dim dataRange As Range
Dim highlighting As Boolean
highlighting = False
With Application.ActiveWorkbook.Sheets("Sheet1")
'This code also highlights Point_2.
Set dataRange = .Range("Data") 'This is your data range. I named mine 'Data'
For Each cel In dataRange
'Check for beginning or end values
If cel = .Range("Point_1").Value Then 'This is your starting value. I named mine 'Point_1'
highlighting = True
End If
'While highlighting is activated, highlight the current cell
If highlighting = True Then
cel.Interior.ColorIndex = 5
End If
If cel = .Range("Point_2").Value Then 'This is your ending value. I named mine 'Point_2'
highlighting = False
End If
Next cel 'Check all cells in dataRange
End With
End Sub
Надеюсь, это помогло! Вы можете изменить цвет подсветки с синего (colorIndex = 5) на любой понравившийся вам цвет. Если вы нажмете «Запись макроса» и отформатируете ячейку так, как хотите, вы можете скопировать сгенерированный код в этот макрос вместо следующей строки:
cel.Interior.ColorIndex = 5
Ура и удачи!