Функция InStr - введите параметр поиска - PullRequest
0 голосов
/ 19 марта 2019

Я использую следующую функцию str в макросе для поиска строки и удаления всей строки, если найдено совпадение.

If InStr(.Value, "@@@") = 0 Then .EntireRow.Delete

Мой вопрос заключается в следующем: можно ли ввестишаблон поиска из местоположения ячейки, например, вместо жесткого кодирования "@@@" в качестве поискового термина в макросе, я хотел бы, чтобы поисковый термин происходил из Sheet1, ячейка A1.Я попытался использовать текстовую строку следующим образом, но он удалил все содержимое

Dim term As String

Sheets("Sheet1").Select
term = Range("A1").Value
If InStr(.Value, "term") = 0 Then .EntireRow.Delete

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Вы можете попробовать следующее:

Option Explicit

Sub test()

    With ThisWorkbook.Worksheets("Sheet1")

        If InStr(1, .Range("A1").Value, "@@@") = 0 Then
            .Rows(1).EntireRow.Delete
        End If

    End With

End Sub

Примечание: Если вы планируете цикл и если условие удовлетворяет удалению строки, вы должны выполнить цикл снизу вверх.

0 голосов
/ 19 марта 2019

Просто используйте term = Worksheets("Sheet1").Cells(1, 1).Value

Sheets коллекция содержит также графики и т. Д., Поэтому лучше использовать worksheets IMO.

Кроме того, не используйте Select, поскольку это плохая практика ( Избегайте использования SELECT или ACTIVATE )

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