XCLUIR LINHAS DE ACORDO COM UM CRITÉRIO
Enviado: Seg Jun 10, 2019 7:28 pm
Boa noite.
Estou iniciando no VBA e estou com algumas dificuldades. Estou desenvolvendo um código onde desejo excluir linhas de acordo com algum critério.
Conforme pesquisa encontrei o código abaixo na própria página do Tomas.
No exemplo ele menciona a palavra ''London'' porém o que estou precisando é uma célula vazia. Fiz o teste trocando apenas por '' '' e a macro trava.
Gostaria de saber onde está meu erro e quais sugestões poderiam passar.
Caso necessite mais de um critério onde entraria o ''AND'' no código?
Agradeço desde já.
Function DeleteRowsByCriteria(ByVal firstRow As Integer, ByVal lastRow As Integer, ByVal criteriaColumn As Integer, ByVal criteria As String) As Integer
Dim deletedRows As Integer
Dim i As Integer
deletedRows = 0
With ActiveSheet
i = firstRow
While i < lastRow
If CStr(.Cells(i, criteriaColumn).Value) = criteria Then
.Rows(i).Delete
deletedRows = deletedRows + 1
Else
i = i + 1
End If
Wend
End With
DeleteRowsByCriteria = deletedRows
End Function
Sub Execute()
MsgBox DeleteRowsByCriteria (1, 200, 6, "London") & " rows has been deleted"
End Sub
Estou iniciando no VBA e estou com algumas dificuldades. Estou desenvolvendo um código onde desejo excluir linhas de acordo com algum critério.
Conforme pesquisa encontrei o código abaixo na própria página do Tomas.
No exemplo ele menciona a palavra ''London'' porém o que estou precisando é uma célula vazia. Fiz o teste trocando apenas por '' '' e a macro trava.
Gostaria de saber onde está meu erro e quais sugestões poderiam passar.
Caso necessite mais de um critério onde entraria o ''AND'' no código?
Agradeço desde já.
Function DeleteRowsByCriteria(ByVal firstRow As Integer, ByVal lastRow As Integer, ByVal criteriaColumn As Integer, ByVal criteria As String) As Integer
Dim deletedRows As Integer
Dim i As Integer
deletedRows = 0
With ActiveSheet
i = firstRow
While i < lastRow
If CStr(.Cells(i, criteriaColumn).Value) = criteria Then
.Rows(i).Delete
deletedRows = deletedRows + 1
Else
i = i + 1
End If
Wend
End With
DeleteRowsByCriteria = deletedRows
End Function
Sub Execute()
MsgBox DeleteRowsByCriteria (1, 200, 6, "London") & " rows has been deleted"
End Sub