Note: The other languages of the website are Google-translated. Back to English

¿Cómo activar o ejecutar una macro haciendo clic en una celda específica en Excel?

Mientras trabaja con Microsoft Excel, es posible que sepa cómo ejecutar una determinada macro con un botón de comando. Pero, ¿sabe cómo ejecutar una macro simplemente haciendo clic en una celda específica en una hoja de trabajo? Este artículo le mostrará el método para activar una macro haciendo clic en una celda específica en detalles.

Active o ejecute una macro haciendo clic en una celda específica con código VBA


Active o ejecute una macro haciendo clic en una celda específica con código VBA

El siguiente código de VBA puede ayudarlo a ejecutar una macro haciendo clic en una celda específica en Excel. Haz lo siguiente.

1. En la hoja de trabajo con la celda en la que necesita hacer clic para ejecutar una macro, haga clic con el botón derecho en la pestaña de la hoja y luego haga clic en Ver código desde el menú contextual.

2. En el Microsoft Visual Basic para aplicaciones ventana, copie y pegue el siguiente script VBA en la ventana Código.

Código de VBA: active o ejecute una macro haciendo clic en una celda específica

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("D4")) Is Nothing Then
            Call MyMacro
        End If
    End If
End Sub

Notas:

1. En el código, D4 es la celda en la que hará clic para ejecutar Macro;

2. Reemplace el nombre del código MiMacro con la macro se ejecutará en la hoja de trabajo. Ver captura de pantalla:

3. presione el otro + Q teclas simultáneamente para cerrar el Microsoft Visual Basic para aplicaciones ventana.

De ahora en adelante, al hacer clic en la celda D4 en la hoja de trabajo actual, su macro especificada se activará inmediatamente.


Artículos relacionados:


Las mejores herramientas de productividad de oficina

Kutools para Excel resuelve la mayoría de sus problemas y aumenta su productividad en un 80%

  • Reutilizar: Inserte rápidamente fórmulas complejas, gráficos y cualquier cosa que hayas usado antes; Cifrar celdas con contraseña; Crear lista de distribución y enviar correos electrónicos ...
  • Barra de súper fórmula (edite fácilmente varias líneas de texto y fórmulas); Diseño de lectura (leer y editar fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas sin perder datos; Contenido de celdas divididas; Combinar filas / columnas duplicadas... Prevenir celdas duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Varias celdas sin cambiar la referencia de la fórmula; Crear referencias automáticamente a varias hojas; Insertar viñetas, Casillas de verificación y más ...
  • Extraer texto, Agregar texto, Eliminar por posición, Quitar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtros a otras hojas); Orden avanzado por mes / semana / día, frecuencia y más; Filtro especial en negrita, cursiva ...
  • Combinar libros y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes de xls, xlsx y PDF...
  • Más de 300 potentes funciones. Compatible con Office/Excel 2007-2021 y 365. Compatible con todos los idiomas. Fácil implementación en su empresa u organización. Funciones completas Prueba gratuita de 30 días. Garantía de devolución de dinero de 60 días.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilite la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!
officetab parte inferior
Comentarios (37)
Aún no hay calificaciones. ¡Sé el primero en calificar!
Este comentario fue minimizado por el moderador en el sitio
Activar o ejecutar una macro haciendo clic en una celda específica con código VBA, no pudo hacer que esto funcionara. Lo intenté de muchas maneras diferentes, pero nunca logró lo prometido.
Este comentario fue minimizado por el moderador en el sitio
Este código solo funcionará si lo coloca en el módulo "ThisWorkbook". No funciona en un módulo general.
nombre del libro de trabajo > Objetos de Microsft Excel > Este libro de trabajo.
Este comentario fue minimizado por el moderador en el sitio
Este código funcionará en el módulo de código de la hoja de trabajo. Debe hacer clic derecho en la pestaña de la hoja y hacer clic en 'Ver código'. Esto abrirá el módulo de código solo para esa hoja de trabajo. Luego pegue el código mencionado.
Este comentario fue minimizado por el moderador en el sitio
Si desea tener múltiples macros, celdas que ejecutan diferentes macros en la misma página, ¿es eso posible?
Este comentario fue minimizado por el moderador en el sitio
Estimado Simón,
El siguiente script de VBA puede ayudarlo a ejecutar diferentes macros haciendo clic en las celdas de la misma página.

Sub hoja de trabajo privada_Cambio de selección (rango de destino ByVal)
Si Target.Count = 1 Entonces
Si no intersecta (objetivo, rango ("D4")) no es nada, llame a MyMacro1
Si no intersecta (objetivo, rango ("D8")) no es nada, llame a MyMacro2
Si no intersecta (objetivo, rango ("D10")) no es nada, llame a MyMacro3
Si terminar
End Sub

Agregue la línea "If Not Intersect(Target, Range("D10")) Is Nothing Then Call MyMacro" para ejecutar más macro haciendo clic en la celda. Y cambie los nombres de celdas y macros en el código según sus necesidades.
Este comentario fue minimizado por el moderador en el sitio
No está funcionando en mi Excel. ¿El código es correcto?
Este comentario fue minimizado por el moderador en el sitio
Hola camila
Lo siento por los inconvenientes ocasionados. Pruebe el siguiente código VBA.

Sub hoja de trabajo privada_Cambio de selección (rango de destino ByVal)
Dim xRgArr como variante
Dim xFunArr como variante
Dim xFNum como entero
Dim xStr como cadena
Dim xRg como rango
xRgArr = Array("A1", "D1", "C1") 'Celdas utilizadas para activar la macro
xFunArr = Array("Nombre de código1", "Nombre de código2", "Nombre de código3") 'Los nombres de código correspondientes
Si Selection.Count = 1 Entonces
Para xFNum = 0 a UBound(xRgArr)
Establecer xRg = ActiveSheet.Range(xRgArr(xFNum))
Si no intersectar (objetivo, xRg) no es nada, entonces
xStr = xFunArr(xFNum)
Aplicación.Ejecutar xStr
Si terminar
Siguiente
Si terminar
End Sub
Este comentario fue minimizado por el moderador en el sitio
Esto funcionó perfectamente y me ahorrará mucho tiempo. Gracias por compartir su conocimiento. ¡Muy apreciado!
Este comentario fue minimizado por el moderador en el sitio
Me alegro de poder ayudar.
Este comentario fue minimizado por el moderador en el sitio
Estupendo. Está funcionando bien... Gracias...
Este comentario fue minimizado por el moderador en el sitio
Hola.

Tengo esto funcionando bien, pero me gustaría agregar una condición para ejecutar la macro. Solo quiero ejecutar la macro si la celda junto a la celda en la que hago clic contiene un valor determinado.
Por ejemplo, cuando hago clic en la celda F6, quiero que se ejecute la macro si la celda E6 contiene "x", pero si la celda E6 está en blanco, la macro no debe ejecutarse.
Espero que tenga sentido.
Muchas Gracias

aquí está mi código original sin la condición:


Opción explícita

Sub hoja de trabajo privada_Cambio de selección (rango de destino ByVal)
Si Selection.Count = 1 Entonces
Si no intersecta (objetivo, rango ("F6: F18")) no es nada, entonces
Fecha de llamadaElegir
Si terminar
Si terminar
End Sub
Este comentario fue minimizado por el moderador en el sitio
Hola,
El siguiente código de VBA puede ayudarlo a resolver el problema. Pruébalo y gracias por tu comentario.

Sub hoja de trabajo privada_Cambio de selección (rango de destino ByVal)
Dim xRg como rango
Si no intersecta (objetivo, rango ("F6: F18")) no es nada, entonces
Establecer xRg = ActiveSheet.Cells(Target.Row, Target.Column - 1)
Si (xRg.Value = "") O (xRg.Value <> "X") Entonces Salir de Sub
selección de fecha de llamada
Si terminar
End Sub
Este comentario fue minimizado por el moderador en el sitio
Gracias, pero ¿qué pasa con las celdas combinadas?
Este comentario fue minimizado por el moderador en el sitio
Hola Alber,
El código no funciona para celdas combinadas.
Este comentario fue minimizado por el moderador en el sitio
estoy usando OpenOffice y he hecho clic con el botón derecho en la pestaña de la hoja y eventos seleccionados y luego seleccioné esta macro de MyMacros. Sin embargo, obtengo un error en la siguiente línea: If Selection.Count = 1 Then >>> "Error de tiempo de ejecución básico, variable no definida...
Este comentario fue minimizado por el moderador en el sitio
Hola James,
El código solo funciona para Microsoft Office Excel. Gracias por tu comentario.
Este comentario fue minimizado por el moderador en el sitio
Mi código completo en esta macro es:


Sub hoja de trabajo privada_Cambio de selección (rango de destino ByVal)

Dim val como cadena
REM val = Rango("A2").Valor

Si Selection.Count = 1 Entonces
Si no intersecta (objetivo, rango ("D24")) no es nada, entonces
Llamada REM MiMacro
val = Rango("D24").Valor
Rango("B27").Valor = valor
Si terminar
Si terminar
End Sub
Este comentario fue minimizado por el moderador en el sitio
Este tema es muy interesante y me interesa pero no se donde encontrarlo, afortunadamente ustedes crearon este tema, espero que todos me ayuden http://run-3.online
Este comentario fue minimizado por el moderador en el sitio
Excel 2002 (XP): si se abre un libro de trabajo seleccionando "Archivo" y presionando "Shift" deshabilita las macros en esa hoja, el problema es que si selecciono "Herramientas> Macro> Macros ..." puedo ejecutar la macro de todos modos, ¿cómo solucionar?
Este comentario fue minimizado por el moderador en el sitio
Hola Roger,
No hemos probado el código en Excel 2002 (XP). ¿Por qué no usar la versión más reciente de Microsoft Office? Será más fácil para su trabajo.
Este comentario fue minimizado por el moderador en el sitio
Mismo resultado en 2010.
Este comentario fue minimizado por el moderador en el sitio
¿Por qué no usar una versión más nueva? Será más fácil
https://games.lol/racing/
Este comentario fue minimizado por el moderador en el sitio
Gracias, pero ¿qué tal varias celdas para hacer clic para ejecutar varias macros?
Este comentario fue minimizado por el moderador en el sitio
Hola,
Pruebe el siguiente código VBA.

Sub hoja de trabajo privada_Cambio de selección (rango de destino ByVal)
Dim xRgArr como variante
Dim xFunArr como variante
Dim xFNum como entero
Dim xStr como cadena
Dim xRg como rango
xRgArr = Array("A1", "D1", "C1") 'Celdas utilizadas para activar la macro
xFunArr = Array("Nombre de código1", "Nombre de código2", "Nombre de código3") 'Los nombres de código correspondientes
Si Selection.Count = 1 Entonces
Para xFNum = 0 a UBound(xRgArr)
Establecer xRg = ActiveSheet.Range(xRgArr(xFNum))
Si no intersectar (objetivo, xRg) no es nada, entonces
xStr = xFunArr(xFNum)
Aplicación.Ejecutar xStr
Si terminar
Siguiente
Si terminar
End Sub
Este comentario fue minimizado por el moderador en el sitio
Gracias por este código. ¿Es posible hacer que esto funcione haciendo clic en una celda que se fusiona con otras?
Este comentario fue minimizado por el moderador en el sitio
Hola M.Symonds,
El código de este artículo puede hacerte un favor: https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html
Gracias por tu comentario.
Este comentario fue minimizado por el moderador en el sitio
hola, estaba tratando de usar este código para ejecutar una macro de pegado, pero parece que no puedo averiguar cómo pegar la macro correctamente.

aquí está mi marco original

Subpegar()
'
'Pegar Macro
'

'
Rango ("B34"). Seleccionar
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
Falso, Sin formato HTML: = Verdadero
End Sub


cualquier ayuda se agradece
Este comentario fue minimizado por el moderador en el sitio
Hola, gracias por tu interesante tema. ¿Qué sucede si, por ejemplo, quiero hacer clic en D4 en Sheet1 y ver el resultado de Macro en Sheet2! F3.
Este comentario fue minimizado por el moderador en el sitio
ya no funciona
Worksheet_SelectionChange no existe de forma predeterminada. Lo que significa que no puede usar eso para activar una macro.

El único sub incrustado que puede usar se menciona en la lista desplegable "Libro de trabajo", así que...

Lo único más parecido que puede hacer es usar Workbook_SheetBeforeDoubleClick. Pero entrará en el modo de edición (todavía no es gran cosa).
Este comentario fue minimizado por el moderador en el sitio
Hola, CodeKiller.Worksheet_SelectionChange solo existe en el editor de hojas (código). Haga clic derecho en la pestaña de la hoja y haga clic en Ver código para activar el editor de hoja (código).
Este comentario fue minimizado por el moderador en el sitio
Es importante recalcar que la macro solo se ejecuta en la hoja de trabajo.
Aquellos de nosotros que usamos el editor Visual Basic normal a menudo terminamos almacenando macros en otros lugares distintos a la hoja de trabajo actual.
Ninguno de estos códigos funcionará en esa situación.
Encuentro que este código es mucho más simple y funciona muy bien para mí: 

Sub hoja de trabajo privada_SelectionChange (ByVal Target As Excel.Range)
Si no intersecta (rango ("d1"), objetivo) no es nada, entonces
llamar aa
Si terminar
End Sub
Sub aa() ' pon tu código aquí
Rango ("D1").Seleccione
Selection.Copy
Rango("F1").Seleccionar
ActiveSheet.PasteEnd Sub
John Wells
jnw.wells@gmail.com
Este comentario fue minimizado por el moderador en el sitio
Hola John Wells, gracias por compartir.
Este comentario fue minimizado por el moderador en el sitio
Para aquellos que quieran que esto funcione para las celdas combinadas, la forma más rápida y sucia es actualizar la Línea 2 de la siguiente manera:
Opción explícita

Sub hoja de trabajo privada_Cambio de selección (rango de destino ByVal)
Si Selection.Count > 0 Entonces
Si no intersecta (objetivo, rango ("D4")) no es nada, entonces
Llamar a MiMacro
Si terminar
Si terminar
End SubSelection.Count se utiliza para determinar si se ha realizado una selección antes de ejecutar la macro restante. Si su selección consta de cuatro celdas que se han combinado, Selection.Count será igual a 4 y el código restante nunca se ejecutará. También puede cambiar la línea 2 al número exacto de celdas que se combinaron, pero eso causará problemas si combinar celdas adicionales.
Este comentario fue minimizado por el moderador en el sitio
Grandioso! Grazie, era una vita che sognavo di poterlo fare, se può essere utile a qualcuno avendo necessità di eseguire più codici su più celle per
aumentare il numero di opzioni basta aggiungere le nuove istruzionisempre sotto la stessa option explicit altrimente ci viene detto che il riferimento al
hoja de trabajo non è univoco. Mi spiego meglio evidentemente su come ho adattato il codice con il mio esempio;

Opción explícita
Sub hoja de trabajo privada_Cambio de selección (rango de destino ByVal)
Si Selection.Count = 1 Entonces
Si no interseca (objetivo, rango ("Y64")) no es nada, entonces
Rango("Y65:Y78").Seleccione
Rango("Y65").Activar
Selection.ClearContents
Rango ("Y65").Seleccione
Si terminar
Si no interseca (objetivo, rango ("A33")) no es nada, entonces
Rango ("A33"). Seleccionar
Selection.Copy
ActiveWindow.WindowState = xlMinimizado
Teclas de envío "^v"
Teclas de envío "{RETROCESO}"
Si terminar
Si terminar
End Sub

Grazie ancora è stata un'autentica meraviglia!

máximo
Este comentario fue minimizado por el moderador en el sitio
No tenía ninguna expectativa con respecto a ese título, pero más me asombraba. El autor hizo un gran trabajo. Pasé unos minutos leyendo y comprobando los hechos. Todo es muy claro y comprensible. Me gustan las publicaciones que llenan tus lagunas de conocimiento. Éste es de ese tipo.
Este comentario fue minimizado por el moderador en el sitio
Hola,

No encuentro la manera de hacer lo que necesito. Espero de veras que me podáis ayudar.
Necesito que se lance una MACRO al hacer clic en una celda, pero no sé en qué celda va a ser, no lo puedo comparar con (si se ha seleccionado la celda A3, por ejemplo, que se lance la acción) porque por funcionalidades del fichero, las celdas se van a mover de sitio (se han podido insertar, mas o menos filas encima). Necesitaría poder saber qué celda es la que se ha seleccionado.
Hay alguna manera de poder hacer eso?
Muchas gracias de antemano.
Este comentario fue minimizado por el moderador en el sitio
Hola hola,
La dirección de la celda es constante. Todo lo que puede mover es el valor de la celda.
La celda que especificó en el código VBA sigue siendo la celda que activa el código VBA especificado.
No hay comentarios publicados aquí todavía
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Siganos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL