Удалить все строки, которые не содержат определенный текст: определить диапазон поиска с помощью InStr (Range) - PullRequest
0 голосов
/ 24 мая 2019

Я хочу удалить любую строку, которая не содержит определенный текст (Федерация). Термин может быть в многочисленных столбцах, и перед ним может стоять либо LOI-, COC- или REA- (то есть LOI-Federation).
Мой диапазон столбцов имеет ошибку

Метод 'Range' объекта'_Global 'Failed

Я хочу найти столбец O по столбцу IH.

Sub CYJLMasterReportMacro()
    SeparateDesignation ("Federation")
End Sub

Sub SeparateDesignation(ByVal DesignationName As String)

    Worksheets.Add().Name = DesignationName
    Worksheets("Results").Activate
    ActiveSheet.Cells.Copy
    Worksheets(DesignationName).Activate
    ActiveSheet.Paste

    Dim i As Integer
    For i = 743 To 2 Step -1
        If InStr(Range("O:IH" & i), DesignationName) = 0 Then
            Range("O:IH" & i).EntireRow.Delete
        End If
    Next

End Sub

1 Ответ

0 голосов
/ 24 мая 2019

Вы можете использовать Find:

Sub SeparateDesignation(ByVal DesignationName As String)

    Dim f As Range, i As Long, wsNew as Worksheet

    Worksheets("Results").Copy After:= Worksheets("Results")
    Set wsNew = Worksheets(Worksheets("Results").Index + 1)
    wsNew.Name = DesignationName

    For i = 743 To 2 Step -1
        Set f = nothing
        Set f = wsNew.Range("O" & i & ":IH" & i).Find(DesignationName, lookat:=xlPart)
        If f is nothing Then
            wsNew.Rows(i).Delete
        End If
    Next

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