Menu suspenso do Excel com condição

Menu suspenso do Excel com condição

Já faz algum tempo que procurei sem conseguir encontrar uma solução para o meu problema. A possui uma tabela chamada tbl_lov que contém a lista de valores usados ​​em uma lista suspensa via função indireta. INDIRETO("tbl_lov[ProjNR]")

À medida que os projetos vão e vêm, 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 no menu suspenso. Infelizmente, ainda não descobri como posso fazer isso diretamente.

Responder1

Como parece que não é nada trivial usar 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 irá iterar pela minha tabela existente e copiar para um novo intervalo apenas os projetos ativos. A validação de dados aponta para a nova tabela.

informação relacionada