Macro tipo "cuadro de lista"

Me gustaría crear una macro tipo "cuadro de lista", en la cuál mediante un elemento de este tipo formado por un cuadro con varias opciones y un círculo a su lado y un botón e aceptar, eligiese un círculo de alguna de estas opciones y le diese a aceptar y me llevase a una hoja diferente del mismo libro. De momento lo que estoy haciendo es crear varios botones y asignarles a cada uno de estos un "sheet.activate", pero me gustaría "profesionalizarlo" un poco más y agregar un cuadro de este tipo, pero no se como...

1 Respuesta

Respuesta
1
Yo creo que te serviría más un combobox pues es más practico y te permite maniobrar más... yo te pasare como hacer lo que dices de forma básica
Por lo que vi, pretendes crear un formulario, pues bien solo necesitarías insertar un combobox y ya.
En el código deberás insertar esto:
Option Explicit
Private Sub UserForm_Initialize()
ComboBox1.Style = fmStyleDropDownList
Dim hoja As Worksheet
For Each hoja In Worksheets
ComboBox1.AddItem hoja.Name
Next
End Sub
Private Sub ComboBox1_Change()
Sheets(ComboBox1.Value).Activate
End Sub
Esto indica que al iniciar el formulario deberá cargarse automáticamente con todos los nombres de las hojas en el libro y mostrarlos en lista desplegable. Lo segundo indica que al haber cambio en el combobox (elegir alguna hoja) deberá activarse automáticamente la hoja que seleccionaste.
Asignas el formulario por ejemplo a algún modulo, y lixto!, ya tienes la macro, solo restara asignarla.
¿Cualquier duda me avisas va que va?...
Buenas,
La verdad es que mi conocimiento sobre macros es bastante pobre, por lo que no te he entendido mucho... lo siento. Lo único que quería hacer era una especie de ventana en la que me saliesen varias opciones, y según la que yo clickase me llevase a una hoja u otra hoja del mismo libro excel que tengo en marcha.
Aunque, todo esto es parte de un trabajo que estoy haciendo y mi idea era desarrollar en un principio tantas hojas como hiciesen falta y las estaba ocultando una a una, y tenía una especie de árbol de preguntas, empezando por una hoja principal con una serie de botones. Si clicko uno me lleva a la hoja 1, clicko otro a la hoja 2, etc... Ahora en la hoja 1 tengo más botones, y repito la operación...
... pero me he llevado la sorpresa que si oculto las hojas, cuando clicko sobre estos botones previos no me conducen a estas hojas por estar ocultas...
Alguien me puede ayudar...
Gracias
Te voy a explicar paso a paso, para crear el formulario te vas a la ficha programador de excel y le das click en el icono de visual basic
Ya estando en la ventana de visual basic, te vas al menu insertar y eliges userform. En la planilla que te aparecerá vas a dibujar el combobox (el cuadro de herramientas te aparecerá a un lado del formulario, de ahí das click sobre el combobox y después lo dibujas en el formulario).
Ahí le das el formato que tu quieras con click derecho, en propiedades. Una vez que tienes el formulario con la vista que quieres (tal como lo tengas aquí, te aparecerá en excel). Le das click derecho sobre el formulario y eliges ver código o bien le das doble click sobre el formulario y pones este código:
Option Explicit
Private Sub UserForm_Initialize()
ComboBox1.Style = fmStyleDropDownList
Dim hoja As Worksheet
For Each hoja In Worksheets
ComboBox1.AddItem hoja.Name
Next
End Sub
Private Sub ComboBox1_Change()
Sheets(ComboBox1.Value).Visible = True
Sheets(ComboBox1.Value).Activate
End Sub
Agregue una linea por si la hoja que eliges esta oculta, esto te permitirá ver la hoja una vez que elijas del combobox.
despues, del menu insertar eliges modulo e insertar este codigo:
Sub MiMacro()
Load UserForm1
UserForm1.Show
End Sub
Y lixto!... ya tienes tu macro. Ahora ya nada más la asignas... puedes insertar una imagen y darle click derecho sobre la imagen y eliges asignar macro (la macro como ves se llama MiMacro) y eliges la macro que deseas asignar, en este caso MiMacro. O bien puedes asignarla a algún botón, en la ficha programador, del icono insertar eliges del control de formulario el botón y lo dibujas sobre la hoja de excel e igualmente eliges la macro llamada MiMacro.
Solo un comentario, la hoja que elijas si estaba oculta cuando la selecciones del combobox ya no estará más oculta, ¿quieres qué se vuelva a ocultar?...
¿Cualquier duda que tengas me avisas va?...
Buenos días,
He intentado hacer lo que me has comentado, pero me pierdo al intentarlo. A ver si te lo puedo explicar mejor lo que pretendo hacer:
1) En una hoja tengo varias imágenes.
2) A cada una de estas imágenes le quiero asignar una macro.
3) Cada una de estas macros, al clickar sobre ellas, quiero que me abra un desplegable o similar, en el que muestre lo siguiente:
    3.1) Una palabra/frase y al lado un círculo
    3.2) Un botón de aceptar/válidar
4) Una vez se halla apretado uno de los círculos y por consiguiente, seleccionado una de las palabras/frases, se apretá al botón aceptar y te lleva a una hoja nueva. Si se selecciona otra palabra/frase te llevaría a otra hoja diferente.
Espero haberme explicado mejor a ver si así puedo entender yo también mejor tus explicaciones.
Pd:    Cuando pones "ComboBox1.AddItem hoja.Name"; "hoja" tendría que poner el nombre de mi hoja???, "Name" tendría que ponerlo aqui el nombre??
Muchas gracias por adelantado
Emmmh... lo que te proponía era que a través del formulario que te pasaba sustituyeras todo el trabajo extra que estas haciendo y que todo quedara en un mismo formulario.
Ahora, en mi proposición es que cuando eligieras alguna opción del formulario (la opción tendría el nombre de la hoja) te llevara a esa hoja que estas eligiendo.
Te prometo que es más fácil de la forma en que te digo y se ve más profesional.
El código que te pase funciona tal cual te lo mande, sin ninguna modificación, si sigues los pasos tal cual te los digo no tendrás ningún problema
Si quieres mejor mandame tu archivo y te lo cargo para que veas como funcionaria el formulario.
Mi correo es [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas