/ / Excel VBA delete row se contém certas strings ou tem um sinalizador delete set - excel, vba

Linha de exclusão do Excel VBA se contiver determinadas cadeias de caracteres ou tiver um conjunto de sinalizadores de exclusão - excel, vba

Eu estou tentando pesquisar coluna B para 3 seqüências de caracteres diferentes. Eu preciso dele para procurar por cidade, estado e zip e se qualquer uma das colunas tem correspondência cidade, estado ou zips, então eu preciso que linha removida.

Eu também tenho configurado para remover uma linha, se houver um 0 no início de um campo na coluna D, mas eu não consegui fazer isso funcionar.

Aqui está o código que tenho até agora:

Sub Removal()
Dim i As Long

For i = Range("B" & Rows.Count).End(xlUp).Row To 1 Step -1
If Left(Range("D" & i), 1) = "0" Then
Rows(i).Delete
Else
Select Case LCase(Range("B" & i))
Case Is = "Orlando", "FL", "37941"
Rows(i).Delete
End Select
End If
Next i
End Sub

O código não está fazendo nada embora.

Respostas:

1 para resposta № 1

É porque você está fazendo LCase nos valores da coluna B, mas comparando com o TitleCase ("Orlando") e UpperCase "FL" palavras na sua declaração de caso.

Modifique seu código assim. Eu testei no meu Excel local e funciona.

ATUALIZAR Eu também modifiquei o código para lidar com os casos que você mencionou nos comentários aqui.

Sub Removal()
Dim i As Long, searchString As String

For i = Range("B" & Rows.Count).End(xlUp).Row To 1 Step -1
" if a row is marked for deletion, delete it and continue.
If Left(Range("D" & i), 1) = "0" Then
Rows(i).Delete
" skip to next row
GoTo NextRow
End If

searchString = LCase(Range("B" & i))

If (InStr(1, searchString, "orlando") > 0) Or _
(InStr(1, searchString, "fl") > 0) Or _
(InStr(1, searchString, "37941") > 0) Then
Rows(i).Delete
End If

NextRow:
Next i

End Sub

Antes de executar o código:

antes

Depois de executar o código:

depois de