Cómo Crear tu Propio Menú Personalizado en Excel
Suscríbete para más tutoriales
Descarga el archivo para practicar
Escribe tu correo electrónico para recibir gratis el archivo para practicar.
*Al enviar mi correo electrónico, acepto recibir noticias y ofertas. Puedo darme de baja en cualquier momento.
🎯 ¿Para qué sirve esta técnica?
✅ Aplicar acciones específicas a un rango determinado de celdas.
✅ Optimizar flujos de trabajo eliminando opciones innecesarias.
✅ Sorprender a compañeros y jefes con un truco avanzado de Excel.
✅ Usar macros de manera más intuitiva y profesional.
🛠️ Paso 1: Comprender los Eventos en Excel y VBA
En VBA, un evento es una acción que se ejecuta automáticamente cuando algo sucede en Excel.
Por ejemplo:
- BeforeRightClick → Se activa antes de hacer clic derecho en una celda.
- SelectionChange → Se activa cuando cambias de celda.
- Workbook_Open → Se ejecuta al abrir el archivo.
Para este caso, utilizaremos el evento BeforeRightClick, que nos permite personalizar el menú contextual al hacer clic derecho en celdas específicas.
🛠️ Paso 2: Insertar la Macro para Crear el Menú Contextual
Ahora que sabemos cómo funcionan los eventos en Excel, insertaremos la macro que modifica el menú contextual en el evento BeforeRightClick.
📌 Sigue estos pasos:
1️⃣ Abre el Editor de VBA (ALT + F11).
2️⃣ Ve al proyecto de tu archivo y haz doble clic en ThisWorkbook.
3️⃣ Copia y pega la siguiente macro:
✍️ Código VBA para Personalizar el Menú Contextual:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim MenuItem As CommandBarControl
Dim ContextMenu As CommandBar
Dim Rango As Range
Set Rango = Sh.Range("B5:E8")
Set ContextMenu = Application.CommandBars("Cell")
If Not Intersect(Target, Rango) Is Nothing Then
On Error Resume Next
Dim Control1 As CommandBarControl
For Each Control1 In ContextMenu.Controls
Control1.Delete
Next Control1
On Error GoTo 0
Set MenuItem = ContextMenu.Controls.Add(Type:=msoControlButton, Before:=1)
With MenuItem
.Caption = "Guardar..."
.OnAction = "Macro1"
.FaceId = 3
End With
Set MenuItem = ContextMenu.Controls.Add(Type:=msoControlButton, Before:=2)
With MenuItem
.Caption = "Microsoft Excel"
.OnAction = "Macro2"
.FaceId = 66
End With
Set MenuItem = ContextMenu.Controls.Add(Type:=msoControlButton, Before:=3)
With MenuItem
.Caption = "Microsoft Word"
.OnAction = "Macro3"
.FaceId = 42
End With
Set MenuItem = ContextMenu.Controls.Add(Type:=msoControlButton, Before:=4)
With MenuItem
.Caption = "Dale play"
.OnAction = "Macro4"
.FaceId = 186
End With
Set MenuItem = ContextMenu.Controls.Add(Type:=msoControlButton, Before:=5)
With MenuItem
.Caption = "El tiempo..."
.OnAction = "Macro5"
.FaceId = 33
End With
Else
Application.CommandBars("Cell").Reset
End If
End Sub
🛠️ Paso 3: Agregar Íconos al Menú Contextual
Para mejorar la presentación del menú, podemos incluir iconos en cada opción utilizando el parámetro FaceId.
Excel tiene una amplia colección de íconos internos. Si quieres ver y seleccionar los iconos disponibles, usa la siguiente macro:
'CREAR BARRA DE FACEIDs
Sub MostrarTodosLosFaceId()
Dim i As Integer
Dim Barra As CommandBar
Dim Boton As CommandBarControl
' Eliminar la barra de herramientas si ya existe
On Error Resume Next
Application.CommandBars("FaceIdBar").Delete
On Error GoTo 0
' Crear una nueva barra de herramientas
Set Barra = Application.CommandBars.Add(Name:="FaceIdBar", Position:=msoBarFloating, Temporary:=True)
' Agregar botones con FaceId del 1 al 200
For i = 1 To 200
Set Boton = Barra.Controls.Add(Type:=msoControlButton)
With Boton
.FaceId = i
.Caption = i ' Muestra el número del FaceId en el tooltip
End With
Next i
' Mostrar la barra de herramientas
Barra.Visible = True
End Sub
🛠️ Paso 4: Restaurar el Menú Contextual Original
Una vez que personalizamos el menú, debemos asegurarnos de que el menú no se vea afectado en otros archivos de Excel.
Para ello, utilizamos el evento Workbook_Deactivate, que detecta cuando el usuario cambia de archivo y restaura el menú original.
Private Sub Workbook_Deactivate()
Application.CommandBars("Cell").Reset
End Sub
Con este código, si abres un nuevo archivo en Excel, el menú contextual volverá a su estado normal automáticamente.
🛠️ Paso 5: Borrar la Barra de FaceId
Si ya no necesitas la barra de íconos, puedes eliminarla ejecutando esta macro:
Sub EliminarFaceIdBar()
On Error Resume Next
Application.CommandBars("FaceIdBar").Delete
On Error GoTo 0
MsgBox "La barra de FaceId ha sido eliminada.", vbInformation
End Sub
Certifícate en Excel
Tienes experiencia en Excel y quieres mejorar tus oportunidades laborales? Obtén la Certificación Excel Expert avalada por Microsoft.
