
Eu tenho uma célula (D3) com um menu suspenso de 8 itens (todas as palavras). Dependendo do item suspenso selecionado, desejo ocultar todas as outras linhas sem essa palavra específica na coluna K (11 colunas desde o início).
Também preciso de uma opção para mostrar todas as linhas se "Todas as linhas" estiver selecionada no menu suspenso.
Alguma idéia sobre o VBA para se relacionar com o valor da célula do menu suspenso?
Além disso, como relaciono o código VBA ao menu suspenso quando selecionado?
Obrigado e agradeço qualquer ajuda.
Este código parece correto? SubfaseTargettoStart()
Dim rMyCell como conjunto de intervalo rMyCell = Range("D3") BeginRow = 6 EndRow = 301 ChkCol = 10 If Range("Audit!D3") = "Seleção de fonte" Then Rows("6:301").EntireRow.Hidden = Falso
Else
If Range("Audit!D3") = "Source Selection + 4 weeks" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "Step 5 + 8 weeks" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "TKO" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "OTOP" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "VP" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "Process Audit" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "PDR" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "PS" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "Show All" Then
Rows("6:301").EntireRow.Hidden = True
End If
End Sub
Responder1
Ao formatar o menu suspenso, você especifica uma célula para armazenar o resultado do item escolhido no menu.
Isso é chamado de "link de célula" e sempre conterá umnúmeroigual à posição escolhida pelo usuário na lista do menu suspenso.
Você pode usar INDEX() para obter o valor real do item de menu (da lista de itens de menu) eesta página de tutorialmostra como ocultar/exibir linhas com VBA.
Vou começar com isso, mas este site não é um site de "codifique para mim". Você tem que investir tempo para aprender como codificar em VBA.
Primeiro, você deve configurar sua lista suspensa corretamente. Na imagem abaixo, configurei alguns dados semelhantes aos seus com uma lista suspensa (também conhecida como caixa de combinação).
Aqui, formatei o controle e defini o intervalo de entrada (itens da lista) como A2:A8 e o link da célula como B2. Quando seleciono "Mostrar tudo" no menu suspenso, a célula B2 mostra 7, porque "Mostrar tudo" é o sétimo item da lista.
Agora, sua tarefa é criar uma lista suspensa semelhante e atribuir esta macro a ela:
Sub ShowHideRows()
'Set up variables
Dim ResultText As String
'Initialize variables
'If choice is "Show All", set ResultText to ABCD, a value that won't be found
'Otherwise, get the text from the list
If Range("B2") = 7 Then
ResultText = "ABCD"
Else
ResultText = Application.WorksheetFunction.Index(Range("A2:A7"), Range("B2"))
End If
MsgBox (ResultText)
End Sub
Se você fizer tudo corretamente, sempre que selecionar um item da lista, deverá ver uma mensagem exibindo o item da lista que você escolheu.
Se você precisar aprender mais sobre como escrever e depurar VBA ou como atribuir um módulo VBA a um controle, use a Internet e pesquise como fazer essas coisas.
Faça perguntas aqui se tiver problemas.