Excel - Como permitir entrada personalizada na célula com base em uma condição específica com condição de lista

0

Eu tinha uma célula que se aplicava à validação de lista. O usuário pode escolher a Opção 1, Opção 2, Opção 3, Outros.

Configuração

Oqueeuqueroéque,seOutrosestiversendoselecionado,ousuárioterápermissãoparaentrarnaalfândega.Casocontrário,seacélulaestivervaziaoucomOpções1,2,3,ousuárionãotempermissãoparaliberartexto.

Aofazeraconfiguração,eunãofizno"Mostrar alerta de erro após dados inválidos serem inseridos". No entanto, isso permitirá que o usuário liberte o texto a qualquer momento.

Se eu estiver no "Mostrar alerta de erro após a inserção de dados inválidos", o usuário não poderá liberar texto. Eles só podiam escolher as opções dadas, que é Opções 1,2,3 & Outros.

Todas as sugestões e ajuda são bem-vindas. Obrigado em adiantado.

    
por aaa 16.11.2017 / 08:06

2 respostas

3

Com base no que melhor entendi sua pergunta. Estou sugerindo uma solução experimental de VBA. O código é criado no Excel 2013. Também deve funcionar no Excel 2016. Tente fazer isso e reverta se isso funcionar para você.

Neste exemplo, a célula D3 é usada. Primeiro crie sua validação manualmente na célula D3 as Opções são exatamente a Opção 1, Opção 2, Opção 3 e Outras.

Agora acesse o Editor VBA pressionando ALT + F11 . A janela do editor de códigos VBA deve abrir. Clique duas vezes na Planilha de Objetos do Excel1, por exemplo, se essa é a sua planilha pretendida e, na janela de código à direita, selecione Planilha do primeiro menu suspenso e Alterar evento da próxima lista suspensa.

Coloque o seguinte código VBA nele. Entre Private Sub Worksheet_Change(ByVal Target As Range) e End Sub

If Target.Address = "$D$3" Then
    If Target.Value = "Others" Then
        With Target.Validation
        .Delete
        .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
        :=xlBetween
        .IgnoreBlank = False
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    End
    End If
End If

If Target.Address = "$D$3" Then
  With Target.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="Option 1,Option 2,Option 3,Others"
        .IgnoreBlank = False
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
  End With
End If

Salve o arquivo como .xlsm e teste a maneira como a validação agora funciona na Cell D3.

    
por 16.11.2017 / 10:54
2

Após analisar sua consulta, concluí que você precisa de validação de dados condicionais . Para isso, você precisa seguir alguns passos.

Etapa 1: Selecione a célula onde deseja colocar a opção e selecione comando de validação de dados , em seguida, Configuração, lista e na caixa de texto de origem escreva as Palavras-chave . Como você já listou.

Etapa 2: você precisa criar Intervalo de dados nomeados para palavras-chave como a opção 1 e outras. Lembre-se de para "Outros" manter o intervalo de dados BLANK , mas outro deve ser preenchido com dados.

Etapa 3: Selecione a célula que você deseja validar para suas entradas de acordo com Palavras-chave , comece com Comando de validação de dados e depois em Configurações próximo conjunto de opção de lista e, finalmente, escrever a seguinte fórmula.

= SE (A2="Opção1", OpçãoUm, SE (A2="Opção2", OpçãoDois, Se (A2="Opção3", OpçãoTrês, Outros)))

NB: Anote a Opção1, Opção2 e & A opção 3 é o nome que eu dei para as palavras-chave . E OptionOne, OptionTwo & OptionThree são os cabeçalhos das colunas dos intervalos de dados nomeados .

Eu sugiro que você mantenha o Data Range Others BLANK Porque essas células em branco permitem que você escreva Free Data.

Espero que isso ajude você. Lembre-se de que publiquei esta solução depois de ter sido TESTADA por mim.

    
por 16.11.2017 / 11:31