Tornar uma célula obrigatória com base na entrada da célula anterior

0

Estou procurando alcançar o seguinte:

A coluna H tem 5 entradas possíveis de uma lista de validação de dados:

Pass, High, Medium, Low & N/A

Se a coluna H for High , Medium ou Low , preciso que a coluna I solicite imediatamente um comentário por meio de uma caixa de diálogo .

Como posso configurar isso?

Também pode ser benéfico acrescentar que eu não sei nada sobre script / código escrito nem eu compreendo qualquer "jargão do Excel", eu sou um usuário & tudo o que sei é auto-ensinado usando trial & erro!

    
por Wozza001 23.11.2017 / 15:07

1 resposta

0

Com base no meu entendimento da sua pergunta, sugiro uma solução VBA. Neste exemplo, o intervalo da coluna de amostra é H2: H7 e a validação pretendida já está em vigor para esse intervalo.

Na planilha, pressione ALT + F11 para acessar o VBA Editor. Sob o painel esquerdo, consulte Microsoft Excel Objects. Abaixo, clique duas vezes na planilha desejada para abrir a janela de programação Even Driven. Na primeira lista suspensa, selecione Planilha e, na segunda lista suspensa, selecione Alterar. Este é o Evento de Mudança da Planilha. As linhas a seguir serão exibidas no editor de código.

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Coloque o seguinte código entre estas duas linhas.

If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then
    Exit Sub
End If

Dim com As String
Dim comm1 As String
'Specify the range below. Set single column range else the code will error out
Set isect = Application.Intersect(Target, Range("H2:H7"))
If isect Is Nothing Then

Else

 If Target.Value = "High" Or Target.Value = "Medium" Or Target.Value = "Low" Then
     com = "Enter comment in " & Target.Offset(0, 1).Address(RowAbsolute:=False, columnabsolute:=False)

     Do While comm1 = ""
        comm1 = Application.InputBox(prompt:=com, Type:=2)
        On Error GoTo myloop
        If comm1 = False Then
            comm1 = ""
        End If
myloop:
     On Error GoTo -1
     Loop
     Target.Offset(0, 1).Value = comm1

 Else
    Target.Offset(0, 1).Value = ""  'Remove this line if not desired
 End If

End If

Salve o arquivo como pasta de trabalho Excel habilitado para macro. De volta na planilha. Teste esse código selecionando os valores pretendidos na caixa de lista de validação e veja se funciona para você e atende à sua exigência. Esse código pode não ter verificação extensiva de erros.

Uma pequena coisa que adicionei é mais tarde, se você alterar o status para "Passar", o comentário será removido da coluna I.

    
por 23.11.2017 / 17:55