Notifications
Clear all

Apagar dados da célula com a lista suspensa

10 Posts
3 Usuários
0 Reactions
1,081 Visualizações
(@vonzuben)
Posts: 549
Prominent Member
Topic starter
 

Criei uma lista suspensa com nome Fechado e Concluído na B1, pois ao selecionar ambos apaga dado da célula A1

Como fazer para apagar ?

Obrigado desde já !

 
Postado : 23/01/2016 9:59 am
(@mprudencio)
Posts: 0
New Member
 

Abra o editor do VBA e cole este codigo

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("B1").Value = "FECHADO" Then
Range("A1").ClearContents
End If
If Range("B1").Value = "CONCLUIDO" Then
Range("A1").ClearContents
End If

End Sub

Salve como pasta com macros

 
Postado : 23/01/2016 10:16 am
(@vonzuben)
Posts: 549
Prominent Member
Topic starter
 

Erro em tempo de execução

O método 'ClearContents' do objeto 'Range' falhou

 
Postado : 23/01/2016 11:21 am
(@mprudencio)
Posts: 0
New Member
 

Tenta assim entao

Private Sub Worksheet_Change(ByVal Target As Range)

If Range("B1").Value = "FECHADO" Then
Range("A1").select
selection.ClearContents
End If

If Range("B1").Value = "CONCLUIDO" Then
Range("A1").select
selection.ClearContents
End If
Range("B1").select

End Sub

 
Postado : 23/01/2016 11:51 am
(@vonzuben)
Posts: 549
Prominent Member
Topic starter
 

Mesmo erro !

O que seria esse erro de tempo de execução ?

 
Postado : 23/01/2016 2:48 pm
(@mprudencio)
Posts: 0
New Member
 

Disponibilize seu arquivo pq nao deveria dar erro.

 
Postado : 23/01/2016 3:47 pm
(@vonzuben)
Posts: 549
Prominent Member
Topic starter
 

Até consegue apagar, mas depois aparece o erro.

https://www.dropbox.com/s/p5e98o5ho7jzhox/Apagar.xlsm?dl=0

 
Postado : 23/01/2016 4:50 pm
(@mprudencio)
Posts: 0
New Member
 

Uma questao o valor da celula D6 e alimentado por formulas????

SE sim pode usar isso

se(ou(D6="FECHADO";D6="CONCLUIDO");"";"CONTINUA A FORMULA")

 
Postado : 23/01/2016 7:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se é para apagar o conteudo de "A1" se o valor de B1 for igual a "Fechado ou Concluido" não precisa ter dois If(s), e acredito que o erro deve ser pelo fato de como estamos utilizando o Evento Change entramos em um Loop infinito, uma vez que sempre que alterar qualquer celula ou mesmo a B1 a A1 será alterada e com isto acionando o Evento Change sempre.
Para resolver este Loop precisamos colocar uma interrupção utilizando a propriedade EnableEvents que evita que a rotina continue utilizando False e habilitando novamente com True, tambem ajustar a instrução para executar somente se for alterado somente o Range "B1", ficando da seguinte forma :

Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False
    
    If Target.Address <> "$B$1" Then GoTo fim
    If Range("B1").Value = "Fechado" Or Range("B1").Value = "Concluido" Then
        
        Range("A1").ClearContents
        
    End If
    
fim:
    Application.EnableEvents = True

End Sub

Faça os testes e veja se é isto.

 
Postado : 23/01/2016 9:11 pm
(@vonzuben)
Posts: 549
Prominent Member
Topic starter
 

Deu certo Mauro !
Obrigado Mauro e MPrudencio !

 
Postado : 23/01/2016 9:43 pm