Как удалить строки, в которых есть ячейка со специальным символом? - PullRequest
1 голос
/ 07 июня 2019

Мне нужно удалить строки, ячейки которых содержат ®.

Cells(iCntr, 6).Value = "*®*"
Cells(iCntr, 6).Value = "®" 

Я также попытался установить вместо условия условия и условия - я не смог заставить что-либо работать со специальным символом.

Sub Remove()

Dim lRow As Long
Dim iCntr As Long
lRow = 1000
   For iCntr = lRow To 1 Step -1
   If Cells(iCntr, 6).Value = "BLK" Then
       Rows(iCntr).Delete
   ElseIf Cells(iCntr, 6).Value = "WHI" Then
       Rows(iCntr).Delete
   ElseIf Cells(iCntr, 7).Value = "*®*" Then
       Rows(iCntr).Delete

 End If
 Next
 End Sub

Код работает просто отличнодля "BLK" и "WHI", но с помощью " ® " ничего не вынимается.Нет никаких сообщений об ошибках, это только не изменяет рабочий лист.

Ответы [ 2 ]

1 голос
/ 07 июня 2019

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

ElseIf Cells(iCntr, 7).Value Like "*®*" Then
0 голосов
/ 07 июня 2019

Вопрос можно перевести на "Как проверить, содержит ли строка определенную подстроку" , потому что, как только эта часть разрешена, соответствующая ячейка может быть удалена.

InStr - это функция, которая сравнивает две строки, возвращая позицию второй в первой. Если второй не найден в первом, то возвращается 0. С некоторой фантазией это можно использовать, чтобы увидеть, присутствует ли (R):

Sub TestMe()
    Debug.Print ThePresenceOfR("kt®b")
    Debug.Print ThePresenceOfR("tzv")
End Sub

Function ThePresenceOfR(str As String) As Boolean
    ThePresenceOfR = InStr(1, str, "®")
End Function

Или, как указано в другом ответе , kt®b Like "*®*" даст те же результаты.

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