VBA - удалить все строки, которые не содержат хотя бы 1 выделенную ячейку - PullRequest
0 голосов
/ 12 декабря 2018

Поиск кода VBA для удаления всех строк, которые не содержат хотя бы 1 выделенную ячейку (используемый цвет: REDINDEX).

Пример таблицы данных со случайно выделенными ячейками

enter image description here

1 Ответ

0 голосов
/ 12 декабря 2018

вы можете сделать это следующим образом:

Public Sub DeleteAllRowsWithNoHighlitedCells()

Dim iRow As Long
Dim lastColumn As Long
Dim aktRow As Range
Dim owsh As Worksheet
Set owsh = ActiveSheet
iRow = 1
lastColumn = 7
Do Until owsh.Cells(iRow, 1) = ""
    Set aktRow = owsh.Range(Cells(iRow, 1), Cells(iRow, lastColumn))
    If Not AktRowHasHighlightedCells(aktRow) Then
        owsh.Rows(aktRow.Row).Delete
        iRow = iRow - 1
    End If
    iRow = iRow + 1
Loop

End Sub

Частная функция AktRowHasHighlightedCells (ByVal aktRow As Range) как логическое значение Dim aktcell как вариант

 For Each aktcell In aktRow.Cells

    If aktcell.Interior.ColorIndex = 3 Then
        AktRowHasHighlightedCells = True
        Exit Function
    End If

Next aktcell
AktRowHasHighlightedCells = False

End Function

Чтобы объяснить, что я имею в виду.Сначала вы должны создать кнопку и поместить DeleteAllRowsWithNoHiglitedCells - процедуру за событием Click.Затем, пока Column1 для каждой строки не будет пустым, каждая ячейка в выбранной строке от column1 до lastColumn (вы должны определить или вы также можете получить lastusedColumn через VBA) проверяется на Interior.Colorindex = 3 (жестко закодированный красный). ЕслиФункция AktRowHasHighlightedCells имеет значение false, строка будет удалена, а rowCounter будет уменьшен.

...