sábado, 28 de diciembre de 2024

Crear un menú y submenú en userform con VBA excel

Para poder lograrlo debemos seguir los siguientes pasos:

1.-Abrir un nuevo libro de trabajo e ir al editor de Microsoft Visual Bascic para Aplicaciones
2.-Ir al menú Insertar, Userform1.
3.-Agregamos una etiqueta Label1 y damos click derecho de la misma y escribimos el siguiente código;

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim CmmBC_Menu As CommandBarControl
Dim CmmBC_Submenu As CommandBarControl
'Limpiamos el menú
Application.CommandBars("cell").Reset
Dim Op_Menu As CommandBarControl
'Ocultamos todos los menús como Copiar, Pegar, Insertar, Eliminar e.t.c del submenú clásico de excel
For Each Op_Menu In Application.CommandBars("cell").Controls
    Op_Menu.Visible = False
Next Op_Menu
'Agregamos el 1er Menú
Set CmmBC_Menu = Application.CommandBars("Cell").Controls.Add(Type:=msoControlPopup, before:=1)
CmmBC_Menu.Caption = "&Productos"
CmmBC_Menu.BeginGroup = True 'Colocamos un separador
'Agregamos el Submenú
Set CmmBC_Submenu = CmmBC_Menu.Controls.Add
CmmBC_Submenu.Caption = "&Kardex"
CmmBC_Submenu.FaceId = 762
CmmBC_Submenu.OnAction = "mKardex"
Set CmmBC_Submenu = CmmBC_Menu.Controls.Add
CmmBC_Submenu.Caption = "&Movimientos de inventario"
CmmBC_Submenu.FaceId = 1949
CmmBC_Submenu.OnAction = "mMovimientos"
Set CmmBC_Submenu = CmmBC_Menu.Controls.Add
CmmBC_Submenu.Caption = "&Lista de precios"
CmmBC_Submenu.FaceId = 1643
CmmBC_Submenu.OnAction = "mListaPrecios"
'Agregamos el 2do Menú
Set CmmBC_Menu = Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton, before:=2)
CmmBC_Menu.Caption = "&Almacenes"
CmmBC_Menu.FaceId = 3743
CmmBC_Menu.OnAction = "mAlmacenes"
CmmBC_Menu.BeginGroup = True 'Colocamos un separador
'Agregamos el 3er Menú
Set CmmBC_Menu = Application.CommandBars("Cell").Controls.Add(Type:=msoControlButton, before:=3)
CmmBC_Menu.Caption = "&Existencias"
CmmBC_Menu.FaceId = 6025
CmmBC_Menu.OnAction = "mExistencias"
CmmBC_Menu.BeginGroup = True 'Colocamos un separador
'Cargamos y mostramos todo nuestro menú y submenú
Application.CommandBars("cell").ShowPopup
End Sub

Mediante el evento MouseMove se creará y mostrará nuestro menú.

4.-Damos clic en el menú Insertar, Módulo y en el escribimos el siguiente código:

Sub mKardex()
MsgBox "Aquí puedes agregar otra acción como cargar un formulario", vbOKOnly + vbInformation, "Kardex"
'Userform2.Show
End Sub
Sub mMovimientos()
MsgBox "Aquí puedes agregar otra acción como cargar un formulario", vbOKOnly + vbInformation, "Movimientos"
'Userform3.Show
End Sub
Sub mListaPrecios()
MsgBox "Aquí puedes agregar otra acción como cargar un formulario", vbOKOnly + vbInformation, "Lista de precios"
'Userform4.Show
End Sub
Sub mAlmacenes()
MsgBox "Aquí puedes agregar otra acción como cargar un formulario", vbOKOnly + vbInformation, "Almacenes"
'Userform5.Show
End Sub
Sub mExistencias()
MsgBox "Aquí puedes agregar otra acción como cargar un formulario", vbOKOnly + vbInformation, "Existencias"
'Userform6.Show
End Sub

Menú y Submenú en userform




No hay comentarios.:

Publicar un comentario