Macro para ejecutar otras macros desde Combobox en la Ribbon

Estoy aplicando el tema de combobox desde la Ribbon, necesito efectuar distintas macros dependiente de la opción seleccionada, Cada macro ejecuta una rutina simple de movimiento de columnas, la macro principal muestra todas las columnas (Proyectos), esta aplicaría a la primera opción de la lista del combox (Todos los proyectos), cada una de las otras macros recibe el nombre de Proyecto_1; Proyecto_2; Proyecto_3... No logro construir una rutina que realice esto, ¿es posible me ayuden?

Public Sub VerProyectos(Control As IRibbonControl, TextoSeleccionado As String)
    If TextoSeleccionado = "Todos los proyectos" Then
        Macro_VerTodos
    Else
        ...........
    End If
End Sub

1 Respuesta

Respuesta
1

No sé cómo tienes cargado el combo en Ribbon.

Te anexo una opción.

Con esta macro cargas un combo en el menú "Complementos"

Sub Crearmenu()
'Por.Dante Amor
    Dim Hoja As Worksheet
    On Error Resume Next
    CommandBars("Menu de Proyectos").Delete
    With CommandBars.Add(Name:="Menu de hojas")
        With .Controls.Add(Type:=msoControlDropdown)
            .AddItem "Todos los proyectos"
            For i = 1 To 3
                .AddItem "Proyecto " & i
                .OnAction = "EjecutarMacro"
                .TooltipText = "Seleccione Proyecto"
            Next
        End With
        .Visible = True
    End With
End Sub

En el combo se agregan los nombres 

"Todos los proyectos"

"Proyecto 1"

"Proyecto 2"

"Proyecto 3"

Tengo un ciclo para agregar del 1 al 3, pero puedes ponerlo del 1 al 20, o al número que quieras.

Cuando seleccionas un elemento del combo se activa la macro "EjecutarMacro"

Sub EjecutarMacro()
'Por.Dante Amor
    Application.ScreenUpdating = False
    With CommandBars.ActionControl
        nombre = .List(.ListIndex)
    End With
    Select Case nombre
        Case "Todos los proyectos": Macro_VerTodo
        Case Else
            num = Replace(nombre, "Proyecto ", "")
            Run "Proyecto_" & num
    End Select
End Sub

Lo que hace la macro "EjecutarMacro", es seleccionar, de acuerdo al nombre que escogiste en el combo una macro para ejecutarla.

Si seleccionaste "Todos los proyectos", entonces se llama a la macro "Macro_VerTodo", si escogiste cualquier otro nombre, entonces se toma el número de ese nombre y se complementa para armar el nombre de la macro, que puede ser "Proyecto_1", "Proyecto_2" o "Proyecto_3"

Sub Macro_VerTodo()
    'tu macro
End Sub
Sub Proyecto_1()
    'tu macro
End Sub
Sub Proyecto_2()
    'tu macro
End Sub
Sub Proyecto_3()
    'tu macro
End Sub

Espero que esta opción te ayude.

Saludos. Dante Amor

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas