Notifications
Clear all

Apagar dados de colunas diferente em VBA


vinyalexandre
(@vinyalexandre)
Active Member Registered
Entrou: 8 meses atrás
Posts: 5
Topic starter  

Boa Tarde,

 

Preciso de uma formula que apaga os dados de diferentes colunas da mesma linha, que ele apague quando uma coluna especifica seja diferente de "".

 

estou utilizando essa formula.

 

*As colunas para apagar são as C D F G H

*A Coluna de referencia para acionar é a P

 

Private Sub CommandButton4_Click()

Dim linhaplanilha1 As Long

inicio:
linhaplanilha1 = 2
Wend

While Me.Range("A" & linhaplanilha1).Value <> ""

If Me.Range("P" & linhaplanilha1).Value <> "" Then

With Range("A3:A100") ' Altere seu intervalo
.Value = .Value
.SpecialCells(xlCellTypeBlanks).Cells.Delete
End With

MsgBox "Movimento com sucesso, excluir x!"

End If

linhaplanilha1 = linhaplanilha1 + 1
Wend

End Sub

 

podem me ajudar a corrigir.

 

Obrigado.


Editado pela Moderação. Motivo: Procure utilizar o botão Código (< >) sempre que for inserir código VBA ou Fórmulas.


ResponderCitar (Quote)
Tags do Tópico
srobles
(@srobles)
Estimable Member Registered
Entrou: 6 anos atrás
Posts: 231
 

@vinyalexandre

 

Veja se as opções abordadas abaixo atendem sua necessidade.

Para efetuar essas alterações sem depender de clicar em um botão, insira o que se segue abaixo no evento Change da guia desejada:

    If Not Intersect(Target, Range("P2:P" & Target.Row)) Is Nothing Then
        
        If Target.Value = "" Then
            Cells(Target.Row, "C") = ""
            Cells(Target.Row, "D") = ""
            Cells(Target.Row, "F") = ""
            Cells(Target.Row, "G") = ""
            Cells(Target.Row, "H") = ""
        End If
        
    End If

Caso necessite utilizar a rotina via clique de botão, use esta rotina adicionando-a em um módulo e a chame no evento Click / ou associando a rotina/macro ao botão:

Sub limparDados()
    Dim wsDados As Worksheet
    
    Set wsDados = ThisWorkbook.Sheets(1) 'Altere para o nome da guia desejada
                
        With wsDados
        
            For vLinha = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
                
                If .Cells(vLinha, "P") = "" Then
                    .Cells(vLinha, "C") = ""
                    .Cells(vLinha, "D") = ""
                    .Cells(vLinha, "F") = ""
                    .Cells(vLinha, "G") = ""
                    .Cells(vLinha, "H") = ""
                End If
                
            Next
                
        End With
        
End Sub
 

 

Espero ter ajudado.

Abs.

Saulo Robles


ResponderCitar (Quote)
vinyalexandre
(@vinyalexandre)
Active Member Registered
Entrou: 8 meses atrás
Posts: 5
Topic starter  

@srobles

Boa Tarde,

 

Obrigado, ele funciona coloquei porém ele apaga as colunas de todas as linhas, eu gostaria q excluisse das linha da condição q eu coloco em uma só linha excluisse essas colunas.

 

Será que é possivel?


ResponderCitar (Quote)
srobles
(@srobles)
Estimable Member Registered
Entrou: 6 anos atrás
Posts: 231
 

@vinyalexandre

 

Para travar a validação em apenas uma determinada linha da guia, utilizando o evento Change da guia, experimente :

    If Not Intersect(Target, Range("P2")) Is Nothing Then 'Trava na célula P2
        
        If Target.Value = "" Then
            Cells(Target.Row, "C") = ""
            Cells(Target.Row, "D") = ""
            Cells(Target.Row, "F") = ""
            Cells(Target.Row, "G") = ""
            Cells(Target.Row, "H") = ""
        End If
        
    End If

Para travar a validação usando o botão de comando, experimente:

Sub limparDados()
    Dim wsDados As Worksheet
    
    Set wsDados = ThisWorkbook.Sheets(1) 'Altere para o nome da guia desejada
                
        With wsDados
        
                If .Cells(2, "P") = "" Then
                    .Cells(2, "C") = ""
                    .Cells(2, "D") = ""
                    .Cells(2, "F") = ""
                    .Cells(2, "G") = ""
                    .Cells(2, "H") = ""
                End If
                
        End With
        
End Sub

Espero ter ajudado.

Abs.

Saulo Robles


ResponderCitar (Quote)