none
Limpar o conteudo de células com valor negativo em um intervalo de tamanho variável RRS feed

  • Pergunta

  • Boa noite.

    Solicito a ajuda para criar uma macro VBA-Excel, que faça a limpeza das células que contenham valor negativo e que estão dentro de um intervalo que inicia na célula J1 e que muda a quantidade de linhas e colunas conforme os dados colados na planilha.

    Consigo fazer a limpeza até a ultima linha preenchida na coluna  J.

    Sub LimparCélulas()

    'percorre da linha 1 até a última linha preenchida na coluna J

    For i = 1 To Cells(Rows.Count, 10).End(xlUp).Row

         'se em J tiver células com valor negativo

        If Cells(i, 10).Value <= 0 Then

        'limpa conteúdo das células com valor negativo da coluna J

        Cells(i, 10).ClearContents

        End If

     'próxima linha

    Next i

    End Sub

     Mas como continuar esta limpeza até a ultima coluna preenchida ?

    quarta-feira, 12 de julho de 2017 21:58

Respostas

  • Você poderia também avaliar o número da última coluna, da mesma forma que fez para linhas, trocando:

    For COL = 4 To 200

    por:

    For COL = 4 To .Cells(2,.Columns.Count).End(xlToLeft).column
    Abraço.



    Filipe Magno

    • Marcado como Resposta Oscar A D Jung quinta-feira, 20 de julho de 2017 00:47
    domingo, 16 de julho de 2017 00:18

Todas as Respostas

  • Oscar, tenta este bloco de código.

    Antes de mais, se pretendes limpar números negativos, lembra-te que "0" não é negativo, portanto não podes escrever "<=0", mas sim "<0".

    Declara a variável "mwksDados" fora do bloco de código e experimenta inserir o código abaixo.

    Dim mwksDados As Excel.Worksheet
    
    
    Sub LimparCélulas()
      Dim lngRow As Long, COL As Long
      
      Set mwksDados = ThisWorkbook.Worksheets("Folha1")
      
      With mwksDados
        For COL = 4 To 200
            For lngRow = 2 To .Cells(.Rows.Count, COL).End(xlUp).Row
    
              If .Cells(lngRow, COL).Value <0 THEN
              
                 .Cells(lngRow, COL).Value=""       
              End If
            Next
        Next COL
      End With
    End Sub
    Espero que resulte.


    M_A_S_L


    • Editado M_A_S_L sexta-feira, 14 de julho de 2017 19:39
    • Sugerido como Resposta M_A_S_L domingo, 14 de janeiro de 2018 16:54
    • Não Sugerido como Resposta M_A_S_L domingo, 14 de janeiro de 2018 16:54
    sexta-feira, 14 de julho de 2017 19:18
  • No Brasil, em lugar de "espero que resulte", dizemos "espero que funcione" ou "espero que dê certo".

    Anderson Diniz

    • Sugerido como Resposta AndersonFDiniz2 terça-feira, 18 de julho de 2017 02:52
    sábado, 15 de julho de 2017 13:39
  • Pois mas o Excell não funciona, apresenta resultados. E em Portugal diz-se resultar, funcionar, dar certo, rolar sobre rodas, surtir efeito, e muitos outros termos.

    Além disso um bloco de código funciona, sempre que não apresenta erros na sua execução quer apresente os resultados desejados ou não.

    Sempre que se obtiveram os resultados desejados e corretos, resultou.


    M_A_S_L


    • Editado M_A_S_L sábado, 15 de julho de 2017 16:38
    sábado, 15 de julho de 2017 16:33
  • Você poderia também avaliar o número da última coluna, da mesma forma que fez para linhas, trocando:

    For COL = 4 To 200

    por:

    For COL = 4 To .Cells(2,.Columns.Count).End(xlToLeft).column
    Abraço.



    Filipe Magno

    • Marcado como Resposta Oscar A D Jung quinta-feira, 20 de julho de 2017 00:47
    domingo, 16 de julho de 2017 00:18
  • M_A _S_L e Filipe, obrigado pela ajuda.

    Abraço.

    segunda-feira, 17 de julho de 2017 02:41