none
For para excluir linha RRS feed

  • Pergunta

  • Olá podem ajudar ?

    Tenho uma coluna de dados em uma planilha e na segunda coluna contem os valores 1, 2 e "indisponivel"

    Preciso criar um For que percorre a coluna até o final e quando for 2 altere para o numero 1 e duplique estes dados para a ultima linha da planilha.

    E quando encontrar o texto "Indiponivel" exclua a linha.

    Tentei realizar desta forma mas como estou definindo por linhaf o for pula linhas

    Sub teste() 
    linhaf = Sheets("plan").Range("a65000").End(xlUp).Row
      
     For T = 2 To 500
       If Cells(T, 8) = "Indisponivel" Then
         ActiveCell.Rows(T).EntireRow.Select
         Selection.Delete
       End If
    Next T
    
    End Sub

    Grato;

    Bruno

    sábado, 4 de setembro de 2010 21:07

Respostas

  • Bruno,

     

    As boas práticas de programação de Excel no que se refere à exclusão de linhas sugere que seja feito do fim da lista até o início. Ou seja, seu contador começa no fim da lista e descreve até o início da mesma. Recomenda-se também declarar as variáveis. Veja como alterei seu código:

    Sub teste()
    
      Dim lngLast As Long
      Dim n As Long
      
      With Sheets("plan")
        lngLast = .Cells(.Rows.Count, "A").End(xlUp).Row
         
        For n = lngLast To 2 Step -1
          If .Cells(n, "H") = "Indisponivel" Then
            .Rows(n).Delete
          End If
        Next n
      End With
    
    End Sub


    http://www.ambienteoffice.com.br
    • Marcado como Resposta BRUNOJUL sábado, 2 de outubro de 2010 12:55
    domingo, 5 de setembro de 2010 11:35
    Moderador

Todas as Respostas

  • E ai Xará..

    Apenas adicione a seguinte linha após o selection.delete

    T=T-1

    Isto deve te atender.

    []´s
    Bruno Silva Leite Office Developer officevb.blogspot.com
    sábado, 4 de setembro de 2010 22:29
  • Bruno,

     

    As boas práticas de programação de Excel no que se refere à exclusão de linhas sugere que seja feito do fim da lista até o início. Ou seja, seu contador começa no fim da lista e descreve até o início da mesma. Recomenda-se também declarar as variáveis. Veja como alterei seu código:

    Sub teste()
    
      Dim lngLast As Long
      Dim n As Long
      
      With Sheets("plan")
        lngLast = .Cells(.Rows.Count, "A").End(xlUp).Row
         
        For n = lngLast To 2 Step -1
          If .Cells(n, "H") = "Indisponivel" Then
            .Rows(n).Delete
          End If
        Next n
      End With
    
    End Sub


    http://www.ambienteoffice.com.br
    • Marcado como Resposta BRUNOJUL sábado, 2 de outubro de 2010 12:55
    domingo, 5 de setembro de 2010 11:35
    Moderador