Ir ao conteúdo
  • Cadastre-se

Macro Excel - Deletar conteúdo


Posts recomendados

Boa tarde, eu preciso de ajuda com uma macro que estou criando. Nessa
macro eu quero que o sistema verifique se o valor da célula AJ7  é igual a 1,
se for, ele deleta o intervalo de dados de AE7:AI7. Depois disso ele pula para
próxima linha, se AJ8 = 1, ele deleta os dados de AE8:AI8. E assim por diante.
Na minha planilha as linhas que utilizo vão até 107. O código que eu estou fazendo
vai ficar muito longo se eu for escrever linha por linha, por isso eu gostaria de saber
se existe um jeito mais simplificado de fazer isso. Segue abaixo o código, como está 
no momento. Espero que exista uma forma de simplificá-lo. Obrigado.

 

Sub apagalibera1()

Application.ScreenUpdating = False


If Sheets("mercado livre").Range("AJ7") = 1 Then
        Range("AE7:AI7").Select
        Selection.ClearContents
     
 ElseIf Sheets("mercado livre").Range("AJ8") = 1 Then
        Range("AE8:AI8").Select
        Selection.ClearContents
        
 ElseIf Sheets("mercado livre").Range("AJ9") = 1 Then
        Range("AE9:AI9").Select
        Selection.ClearContents
        
 ElseIf Sheets("mercado livre").Range("AJ10") = 1 Then
        Range("AE10:AI10").Select
        Selection.ClearContents
        
 ElseIf Sheets("mercado livre").Range("AJ11") = 1 Then
        Range("AE11:AI11").Select
        Selection.ClearContents
        
 ElseIf Sheets("mercado livre").Range("AJ12") = 1 Then
        Range("AE12:AI12").Select
        Selection.ClearContents
    
 Else
 
        Call apagalibera2
        
 End If

        Call apagalibera2

Application.ScreenUpdating = True

End Sub

Link para o comentário
Compartilhar em outros sites

Application.ScreenUpdating = False

Dim Area As Range
Dim ML As Worksheet

Set ML = ThisWorkbook.Sheets("mercado livre")

ML.Select
ML.Range("AJ7").Select

Do While ActiveCell.Value <> ""
    
    If ActiveCell.Value = 1 Then
        
        Set Area = ML.Range(ActiveCell.Offset(0, -5), ActiveCell.Offset(0, -1))
        
        Area.ClearContents
    
    End If

ActiveCell.Offset(1, 0).Select
Loop

Application.ScreenUpdating = True

Só funciona se o conteúdo de AJ** for diferente de zero ou ele irá parar o loop, isso pode ser contornado com for each também, mas não fica tão dinâmico. 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...