
Tengo una celda (D3) con un menú desplegable de 8 elementos (todas las palabras). Dependiendo del elemento desplegable seleccionado, quiero ocultar todas las demás filas sin esa palabra específica en la columna K (11 columnas desde el principio).
También necesito una opción para mostrar todas las filas si "Todas las filas" está seleccionada en el menú desplegable.
¿Alguna idea sobre VBA para relacionarla con el valor de la celda del menú desplegable?
Además, ¿cómo relaciono el código VBA con el menú desplegable cuando lo selecciono?
Gracias y agradezco cualquier ayuda.
¿Este código parece correcto? SubfaseTargettoStart()
Dim rMyCell As Range Set rMyCell = Range("D3") BeginRow = 6 EndRow = 301 ChkCol = 10 If Range("Audit!D3") = "Selección de fuente" 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
Respuesta1
Al formatear su menú desplegable, especifica una celda para contener el resultado del elemento que se eligió en el menú.
Esto se llama "enlace de celda" y siempre contendrá unnúmeroigual a la posición de elección del usuario en la lista del menú desplegable.
Puede usar INDEX() para obtener el valor real del elemento del menú (de la lista de elementos del menú), yesta página de tutorialesmuestra cómo ocultar/mostrar filas con VBA.
Voy a empezar con esto, pero este sitio no es un "sitio de código para mí". Tienes que invertir tiempo para aprender a codificar en VBA.
Primero, debes configurar tu lista desplegable correctamente. En la imagen a continuación, configuré algunos datos similares a los suyos con una lista desplegable (también conocida como cuadro combinado).
Aquí, formateé el control y definí el Rango de entrada (elementos de la lista) como A2:A8 y el Enlace de celda como B2. Cuando selecciono "Mostrar todo" en el menú desplegable, la celda B2 muestra 7, porque "Mostrar todo" es el séptimo elemento de la lista.
Ahora, su tarea es hacer una lista desplegable similar y asignarle esta macro:
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
Si hace todo correctamente, cada vez que seleccione un elemento de la lista, debería ver un mensaje que muestra el elemento de la lista que eligió.
Si necesita aprender más sobre cómo escribir y depurar VBA, o cómo asignar un módulo VBA a un control, utilice Internet e investigue cómo hacer esas cosas.
Haga preguntas aquí si tiene problemas.