Cómo Crear tu Propio Menú Personalizado en Excel

¿Sabías que puedes crear tu propio menú contextual en Excel al hacer clic derecho en un rango específico de celdas?

Con esta técnica, podrás agregar opciones personalizadas, eliminar las opciones originales y asegurarte de que el menú solo aparezca cuando tú quieras. Si quieres aprender cómo hacerlo, sigue leyendo.

Cómo Crear tu Propio Menú Personalizado en Excel

Cómo Crear tu Propio Menú Personalizado al dar Click derecho en una Celda

Suscríbete para más tutoriales

Descarga el archivo para practicar

Escribe tu correo electrónico para recibir gratis el archivo para practicar.

🎯 ¿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.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top