Macro con Lista desplegable y condiciones lógicas

Saludos, de antemano agradezco su atención, mi pregunta es la siguiente; estoy realizando un macro donde contesto una pregunta (SI / NO) mediante una lista desplegable, la intención es que al contestar "SI" en una o más preguntas me muestre unas imágenes (cuadro de texto con más preguntas) y otras listas desplegables, si la respuesta es "NO" en todas las preguntas las mantiene ocultas, mi duda es con la sintaxis de las condiciones para una lista desplegable estoy utilizando If, Or para las condiciones y la planteo de esta forma:
Sub Cuestionario ()
'If "Lista desplegable 1" = "SI" Or "Lista desplegable 3" = "SI" Or "Lista desplegable 5" = "SI" Or "Lista desplegable 7" = "SI" Or "Lista desplegable 9" = "SI" Or "Lista desplegable 10" = "SI" Then
ActiveSheet.Shapes("458 Grupo").Visible = True
ActiveSheet.Shapes("Lista desplegable 105").Visible = True
ActiveSheet.Shapes("Lista desplegable 114").Visible = True
ActiveSheet.Shapes("Lista desplegable 124").Visible = True
ActiveSheet.Shapes("Lista desplegable 129").Visible = True
ActiveSheet.Shapes("Botón 149").Visible = True
Else
If "Lista desplegable 1" = "NO" Or "Lista desplegable 3" = "NO" Or "Lista desplegable 5" = "NO" Or "Lista desplegable 7" = "NO" Or "Lista desplegable 9" = "NO" Or "Lista desplegable 10" = "NO" Then
ActiveSheet.Shapes("458 Grupo").Visible = False
ActiveSheet.Shapes("Lista desplegable 105").Visible = False
ActiveSheet.Shapes("Lista desplegable 114").Visible = False
ActiveSheet.Shapes("Lista desplegable 124").Visible = False
ActiveSheet.Shapes("Lista desplegable 129").Visible = False
ActiveSheet.Shapes("Botón 149").Visible = False
End If
End If
End Sub
Agradezco su atención, muchas gracias, espero me puedan ayudar

1 respuesta

Respuesta
1
De lo que veo en tu código te tengo una observación, ya que la función OR hace que siempre que se cumpla alguna condición realice lo que solicita, es decri, si la lita despegable 1 dice No, pero la Lista despegable 3 dice Si, entonces, aparecerá los objetos que manitenes ocultos.
Hola, muchas gracias por responder, bueno la idea es que son 6 preguntas que se responde SI / NO mediante la lista desplegable, si una o más de las 6 preguntas se contesta como SI me muestra la imagen pero si todas se contestan como NO entonces no me muestra ninguna de las imágenes, solo que al correr el macro no me genera errores pero no me cambia la visibilidad de las imágenes =( aun si solo dejara el if no las oculta, "Lista desplegable 1" = "NO", "Lista desplegable 1" = "SI" ¿Es correcta esta expresión?,
Por ejemplo para una celda C3 ise algo similar solo que ahi puse la opcion SI / NO por medio de una validacion de datos la condicion me quedaba asi;
Sub ()
If Cells(3, 3) = "SI" Then
ActiveSheet.Shapes("78 Grupo").Visible = True
ActiveSheet.Shapes("Lista desplegable 1").Visible = True
ActiveSheet.Shapes("Lista desplegable 3").Visible = True
...
Else: Cells(3, 3) = "NO"
ActiveSheet.Shapes("78 Grupo").Visible = False
ActiveSheet.Shapes("Lista desplegable 1").Visible = False
ActiveSheet.Shapes("Lista desplegable 3").Visible = False
...
End If
End Sub
Los ... son más listas, este macro si me corre bien, :P no lo seguí haciendo con celdas ya que necesito la movilidad tipo imagen que ofrece la lista, ahora que si existe otra opción les agradecería que la compartieran :)
Agradezco tu ayuda saludos
Basado en lo que me dices esta parte de tu código esta de más:
If "Lista desplegable 1" = "NO" Or "Lista desplegable 3" = "NO" Or "Lista desplegable 5" = "NO" Or "Lista desplegable 7" = "NO" Or "Lista desplegable 9" = "NO" Or "Lista desplegable 10" = "NO"
Ya que el Else considera que no se cumplió la primera condición que señalabas arriba.
Quita esa condiconante y prueba, de lo que leo debería funcionar.
Me avisas
Hola, seguí el consejo tenias rason lo tenia de más, me corre el else pero el if no, para hacerlo más sencillo y a modo de prueba estoy trabajando con:
If "Lista desplegable 1" = "SI" Then
ActiveSheet.Shapes("458 Grupo").Visible = True
ActiveSheet.Shapes("Lista desplegable 105").Visible = True
...
Else:
ActiveSheet.Shapes("458 Grupo").Visible = False
ActiveSheet.Shapes("Lista desplegable 105").Visible = False
...
End If
Cuando la lista dice NO si me desaparece las figuras pero cuando dice SI no las aparece me parece que estoy planteando mal la igualdad y que el if no me reconoce "Lista desplegable 1" = "SI" como la variable a la que le hago los cambios
Muchas Gracias por tu ayuda, saludos
Tienes razón, tal como lo estas planteando estas igualando dos textos, ya que pones entre comillas los dos y el código los reconoce como texto a los dos, es como si dijeras:
"Usuario1"="Usuario2"----Los dos son textos, lo que debes hacer es valuar la respuesta de tu lista despegable,
¿Pregunto? La respuesta de la lista despegable se llena en un texbox, en ua celda de excel o en donde almacena la respuesta.
Hola, la lista desplegable toma las Respuestas SI / NO de un rango $A$1:$A$2, con la opción Formato de contro > Control > Rango de entrada.
Muchas gracias por tu ayuda.
Debes valuar la celda en la que tengas la lista despegable, es decir pensemos que en B1 tienes la lista despegable(no tiene nada que ver de donde sacas la info A1:A2). Según mi ejemplo el código seríka asó:
if Range("B1").value = "No" then
tu codigo
else
Tu código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas