VBA для выполнения действий, пока ячейка не соответствует критериям - PullRequest
0 голосов
/ 01 мая 2018

Мне не повезло в поиске, надеюсь, вы все можете помочь.

Я пытаюсь выполнить следующее в Excel:

Если ячейка соответствует значению из таблицы1, выделите эту ячейку. Затем выделите ячейку под ней и продолжайте выделять ячейки под ней, пока она не достигнет ячейки, соответствующей значению из таблицы 2.

Я не могу понять, как работать в функции цикла для этого

Заранее спасибо

1 Ответ

0 голосов
/ 01 мая 2018

Я написал простой цикл 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

Ура и удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...