Notifications
Clear all

Lista Supensa - Deixar campo em branco.

9 Posts
2 Usuários
0 Reactions
1,014 Visualizações
(@gangstar)
Posts: 6
Active Member
Topic starter
 

Olá Pessoal, como estão?

Já rodei a internet atrás de uma solução para isso, mas não encontrei =(

Bom, eu tenho listas suspensas em 3 níveis.

O 3º nível somente um opção do 2º nível revela as opções para serem clicadas.

A dúvida é: como deixar a célula em branco após mudar de opção na lista.

Vou deixar a planilha, se puderem me dar uma ajuda, ficaria agradecido.

 

 
Postado : 14/04/2022 9:52 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Segue uma solução via macro, veja se lhe serve.

Cole uma cópia do código abaixo no módulo da Plan1. Para acessar o módulo clique com o direito na guia daquela planilha e escolha Exibir Código.

Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, [B1:B2]) Is Nothing Then Exit Sub
 If Target.Address = "$B$1" Then [B2:B3] = "" Else [B3] = ""
End Sub

funcionamento - ao alterar manualmente B1 o código irá limpar B2:B3, e ao alterar manualmente B2 o código irá limpar B3.

Osvaldo

 
Postado : 15/04/2022 9:30 am
(@gangstar)
Posts: 6
Active Member
Topic starter
 

@osvaldomp Mestre, funcionou perfeitamente! Era isso mesmo que eu precisava.

Você poderia me ajudar em mais uma dúvida?

Sou iniciante ainda e estou apanhando para função SE (Não sei se o que preciso seria essa função mesmo).

Eu preciso inserir o nome que está no ultimo nível das listas apresentadas.

No exemplo, tenho 3 listas certo?

Eu precisaria que:
Se na 3º lista contiver um nome, exibir este nome;
Se a 3º lista estiver vazia, exibir o nome que está na 2º lista;
Se na 2º lista contiver um nome, exibir este nome;
Se a 2º lista estiver vazia, exibir o nome que está na 1º lista;
E se a 1º lista contiver um nome, exibir este nome;

Não sei se conseguiu entender haha

Se puder me ajudar, ficaria imensamente grato!

Este post foi modificado 3 anos atrás por GangStar
 
Postado : 15/04/2022 7:38 pm
(@osvaldomp)
Posts: 857
Prominent Member
 
Postado por: @gangstar

Eu preciso inserir o nome que está no ultimo nível das listas apresentadas.
Você se refere a "último nível" como sendo a célula B3, é isso?

No exemplo, tenho 3 listas certo?
Validação em B1:B3, é isso?

Eu precisaria que:
Se na 3º lista contiver um nome, exibir este nome;
Exibir onde, em qual célula? Na própria B3?

Idem para as demais condições.

dica - para facilitar o entendimento cite sempre os endereços das células em lugar de citar "lista" 😉 

Osvaldo

 
Postado : 16/04/2022 9:52 am
(@gangstar)
Posts: 6
Active Member
Topic starter
 

@osvaldomp Meu amigo, eu tinha ate colocado uma resposta aqui, mas acabei encontrando uma solução e apaguei.

Não sei se é a mais indicada, mas resolveu aqui o meu problema.

Usei a função Índice + Cont.valores

Ficou assim: =ÍNDICE(B1:B3;CONT.VALORES(B1:B3))

Dessa forma, retorna o último valor do intervalo.

Me tira somente uma última dúvida com o código que você me enviou:

Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, [B1:B2]) Is Nothing Then Exit Sub
 If Target.Address = "$B$1" Then [B2:B3] = "" Else [B3] = ""
End Sub

No exemplo acima, está usando apenas da célula B1 até a B3. Como ficaria se eu precisasse usar da célula B1 até a célula B20.

Se puder me passar a lógica, ficaria agradecido =D

Este post foi modificado 3 anos atrás por GangStar
 
Postado : 16/04/2022 9:42 pm
(@osvaldomp)
Posts: 857
Prominent Member
 
Postado por: @gangstar

No exemplo acima, está usando apenas da célula B1 até a B3. Como ficaria se eu precisasse usar da célula B1 até a célula B20. (?)

Pergunta genérica, resposta genérica ~~~> substitua B3 por B20.  😜 

Osvaldo

 
Postado : 17/04/2022 9:54 am
(@gangstar)
Posts: 6
Active Member
Topic starter
 

@osvaldomp kkkkk

Aumentei apenas mais uma célula e não funcionou =(

Segue planilha em anexo.

Poderia me explicar a lógica, por gentileza?

 
Postado : 17/04/2022 10:12 am
(@osvaldomp)
Posts: 857
Prominent Member
 
Postado por: @gangstar

Aumentei apenas mais uma célula e não funcionou =(

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B1:B3]) Is Nothing Then Exit Sub
Target.Offset(1).Resize(4 - Target.Row).Value = ""
End Sub

Osvaldo

 
Postado : 18/04/2022 1:14 pm
(@gangstar)
Posts: 6
Active Member
Topic starter
 

@osvaldomp funcionou certinho aqui!

Muito obrigado mesmo pela ajuda e paciência!

Tudo de bom meu amigo.

Abraço!

 
Postado : 18/04/2022 2:36 pm