Lista suspensa do Excel com condição

0

Eu pesquisei por um tempo sem conseguir encontrar uma solução para o meu problema. A tem uma tabela chamada tbl_lov que contém a lista de valores usados em uma lista suspensa via função indireta. INDIRECT ("tbl_lov [ProjNR]")

À medida que os projetos vêm e vão, eu tenho uma coluna em tbl_lov chamada active que contém um valor True ou False. Se for falso, não quero que esse valor seja mostrado na lista suspensa. Infelizmente, ainda não descobri como posso fazer isso diretamente.

    
por Alexandre Alves 05.01.2018 / 12:22

1 resposta

0

Como parece que não é nada trivial usando apenas as funções, o que acabei fazendo foi usar uma Macro (que eu queria evitar).

Dim all_lov As Variant
Dim row_nr As Integer

Sub Button1_Click()
    Worksheets("LoV").Range("I:N").Delete
    row_nr = 3
    all_lov = Worksheets("LoV").ListObjects("tbl_lov").DataBodyRange.Value
    Worksheets("LoV").Range("B3:G3").Copy Worksheets("LoV").Range("I3")
    For i = 1 To UBound(all_lov)
        If all_lov(i, 6) = True Then
            row_nr = row_nr + 1
            Worksheets("LoV").Range("B" & (3 + i) & ":G" & (3 + i)).Copy Worksheets("LoV").Range("I" & row_nr)
        End If
    Next i
    Worksheets("Lov").ListObjects.Add(SourceType:=xlSrcRange, Source:=Worksheets("LoV").Range("I3:N" & row_nr), xlListObjectHasHeaders:=xlYes, tablestyleName:="TableStyleDark3").Name = "tbl_lovActive"
End Sub

Isso iterará a minha tabela existente e copiará para um novo intervalo apenas os projetos ativos. A validação de dados aponta para a nova tabela.

    
por 10.01.2018 / 13:21