Como hacer una Call a una rutina Sub cuyo nombre está almacenado en una variable

He consttruido un menú dinámico cuya estructura de jerarquías (niveles) reside en una tabla. Cuando el mouse está encima de un elemento del menú, con los datos de la tabla despliego el submenú del item seleccionado, hasta llegar el ítem que quiero seleccionar con un clic.

Al hacer clic en un elemento del menú (en el nivel que sea) quiero ejecutar una Sub del propio formulario, ya sea para abrir un formulario o ejecutar otro tipo de acciones. El nombre de la sub tambien está en la tabla. Pero al hacer una Call, VBA no me admite que lo haga usando una variable o el valor de un campo como en este caso.

¿Alguin sabe como puedo invocar a una rutina Sub utilizando como nombre de la misma el valor contenido en una variable o en un campo de una tabla?

1 respuesta

Respuesta
2

Te dejo la instrucción que necesitas. En este caso la macro se llama como el elemento seleccionado del Combo.

Private Sub ComboBox28_Click()     'Ajustar el nombre del control
'la macro que se encuentra en el Módulo3 tiene por nombre el elemento seleccionado en el combobox
Application.Run ("Módulo3." & ComboBox28.Text)
End Sub

Del mismo modo, en lugar del valor del combo, podrías utilizar una variable. Por ej:

Private Sub ComboBox28_Click()
Dim miMacro As String
miMacro = ComboBox28.Value
Application.Run ("Módulo3." & miMacro)
End Sub

¡Gracias! 

No conocía este método del objecto Aplication. Siempre se aprenden cosas nuevas.

Un saludo

Sabes si esta instrucción necesita que la Sub sea pública o si la ejecuto desde el módulo de un formulario podría ser privada estando la Sub en el propio módulo.?

Debe estar en un módulo, aunque podrás llamarla sin indicarlo, de este modo:

Application. Run (miMacro)

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas