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

¿Cómo ejecutar una macro cuando el valor de la celda cambia en Excel?

Normalmente, en Excel, podemos presionar la tecla F5 o el botón Ejecutar para ejecutar el código VBA. Pero, ¿alguna vez ha intentado ejecutar el código de macro específico cuando cambia el valor de una celda? En este artículo, presentaré algunos trucos rápidos para lidiar con este trabajo en Excel.

Ejecute o llame a la macro cuando un valor de celda específico cambia con el código VBA

Ejecute o llame a la macro cuando cualquier valor de celda cambie en un rango con código VBA


flecha azul burbuja derecha Ejecute o llame a la macro cuando un valor de celda específico cambia con el código VBA

Para ejecutar un código de macro cambiando el valor de una celda, el siguiente código VBA puede hacerle un favor, haga lo siguiente:

1. Haga clic con el botón derecho en la pestaña de la hoja en la que desea ejecutar la macro si el valor de la celda cambia, y luego elija Ver código desde el menú contextual, y en el Microsoft Visual Basic para aplicaciones ventana, copie y pegue el siguiente código en el módulo en blanco:

Código de VBA: ejecute la macro cuando cambie el valor de la celda:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Call Mymacro
    End If
End Sub

doc ejecutar macro si la celda cambia 1

Nota:: En el código anterior, A1 es la celda específica en la que desea ejecutar el código, mimacro es el nombre de la macro que desea ejecutar. Cámbielos según sus necesidades.

2. Y luego guarde y cierre la ventana de código, ahora, cuando ingrese o cambie el valor en la celda A1, el código específico se activará de inmediato.


flecha azul burbuja derecha Ejecute o llame a la macro cuando cualquier valor de celda cambie en un rango con código VBA

Si desea ejecutar o activar una macro cuando el valor de una celda cambia en un rango de celda, el siguiente código puede ayudarlo.

1. Haga clic con el botón derecho en la pestaña de la hoja en la que desea ejecutar la macro si el valor de la celda cambia, y luego elija Ver código desde el menú contextual, y en el Microsoft Visual Basic para aplicaciones ventana, copie y pegue el siguiente código en el módulo en blanco:

Código de VBA: ejecute la macro cuando cualquier valor de celda cambie en un rango:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then
Call Mymacro
End If
End Sub

doc ejecutar macro si la celda cambia 2

Nota:: En el código anterior, A1: B100 son las celdas específicas en las que desea ejecutar el código, mimacro es el nombre de la macro que desea ejecutar. Cámbielos según sus necesidades.

2. Y luego guarde y cierre la ventana de código, ahora, cuando ingrese o cambie el valor en cualquier celda de A1: B100, el código específico se ejecutará de inmediato.


Eliminar todas las macros de varios libros de trabajo

Kutools for Excel's Eliminar todas las macros por lotes La utilidad puede ayudarlo a eliminar todas las macros de varios libros de trabajo según lo necesite. ¡Descarga y prueba gratis Kutools para Excel ahora!

Kutools for Excel: con más de 300 prácticos complementos de Excel, prueba gratuita y sin límite en 30 días. ¡Descarga y prueba gratis ahora!


Artículos relacionados:

¿Cómo ejecutar macro automáticamente antes de imprimir en Excel?

¿Cómo ejecutar una macro basada en el valor de la celda en Excel?

¿Cómo ejecutar una macro según el valor seleccionado de la lista desplegable en Excel?

¿Cómo ejecutar una macro haciendo clic en hipervínculos en Excel?

¿Cómo ejecutar una macro cuando se selecciona una hoja de un libro de trabajo?


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 (17)
Aún no hay calificaciones. ¡Sé el primero en calificar!
Este comentario fue minimizado por el moderador en el sitio
Este módulo no me funciona. Dice que cuando cambie el VALOR de la celda, ejecutará el código. Encuentro que si ESCRIBO en la celda funciona, pero si el valor de la celda cambia por una fórmula, por ejemplo, un Counta, entonces no se ejecuta. ¿Tiene una solución para ejecutar una macro cuando el VALOR cambia a través de una fórmula? Gracias, Wayne
Este comentario fue minimizado por el moderador en el sitio
Mismo problema que Wayne. Cualquier ayuda muy apreciada! Gracias Ronnie
Este comentario fue minimizado por el moderador en el sitio
Hola chicos,

Sí, el código anterior solo está disponible cuando el valor de la celda cambia manualmente, si necesita ejecutar un código de macro específico automáticamente cuando el resultado de la fórmula cambia con el cambio de celdas relativas, visite este artículo:
https://www.extendoffice.com/documents/excel/4618-excel-vba-run-macro-when-cell-formula-result-changes.html.
Pruébalo y espero tu respuesta.
Este comentario fue minimizado por el moderador en el sitio
No funciona... y estoy cambiando el valor de la celda manualmente. ¿Hay alguna preconfiguración que deba configurarse?
Este comentario fue minimizado por el moderador en el sitio
Pruebe esto en el procedimiento y utilícelo como parámetro.


Sub hoja de trabajo privada_Change (ByVal Target As Range)

MsgBox Target.Address & "-" e Target.AddressLocal

End Sub
Este comentario fue minimizado por el moderador en el sitio
Sí, la descripción dice que debería activarse cuando cambia el valor, pero el segundo código dice que es cuando el valor no es nada, y el primero tampoco activa cuando cambia un valor, pero si presiono F5 cuando miro el código, quiere para activar MyMacro, pero no parece reaccionar a los cambios de valor tanto como pasar de nada a algo u opuesto.
Este comentario fue minimizado por el moderador en el sitio
Esto funcionó por primera vez para mí usando la lista de validación de datos que muestra texto basado en la selección de la lista.
Este comentario fue minimizado por el moderador en el sitio
¡Funcionó muy bien para mí! Mi dilema es que quiero que sea una macro de referencia relativa y hay una diferencia entre presionar enter para guardar la entrada y eliminar para borrar la celda.
Este comentario fue minimizado por el moderador en el sitio
Oye, código útil. Estaba pensando si sería posible insertar un anillo alrededor de las celdas que se cambian a medida que se cambian. ¿Y restablecer los círculos todos los lunes?
Este comentario fue minimizado por el moderador en el sitio
Hola Kevin,
Aquí no hay una idea para resolver su problema, si tiene alguna buena solución, comente aquí.
Este comentario fue minimizado por el moderador en el sitio
La macro a la que llamas donde la tienes ubicada? Tengo el mío en la carpeta Módulos, pero cuando pongo cualquier valor en cualquier celda de la hoja de trabajo, aparece un error de compilación que dice:
Variable o procedimiento esperado, no módulo.

Por favor, ayuda.
Este comentario fue minimizado por el moderador en el sitio
Hola, Dr. Cartwright,
Perdón por responderte tan tarde.
Sí, como dijiste, el código de la macro debe ubicarse en el Módulo, y debes cambiar el nombre del código a tu propio nombre como se muestra en la siguiente captura de pantalla:
Este comentario fue minimizado por el moderador en el sitio
hola buenas tardes
quisiera saber el codigo para que se active una macro cuando cambia el valor de una celda de una columna, pero este valor cambia por formula, sin que el usuario ingrese ningun valor.
Este comentario fue minimizado por el moderador en el sitio
Hola chicos, estoy resolviendo el siguiente problema: quiero raspar un título del sitio web cuando se inserta un enlace en la columna A y poner este valor en la celda correspondiente (al lado) en la columna B. El problema parece ser que una vez que pego el sitio web en la columna A, el código vuelve a ejecutar la lista completa desde la columna A2 hasta la "última fila" como se define en el código. ¿Hay alguna forma de modificar solo la columna B una vez que se modifica una sola columna A? Es decir, si pego un enlace en la columna A36, obtengo un título en B36, independientemente de si la celda está en el medio del rango utilizado o en la parte inferior. Me gustaría usar esto sin tener que volver a ejecutar múltiples entradas tal como está actualmente; (es decir, el ciclo "para i = 2 a la última fila")? Además, me gustaría cambiar lo siguiente de macro modular, es decir, sub a sub privado que reacciona al cambio (es decir, función de intersección) donde el 'objetivo' es cualquier celda del rango A:A. ¡Muchas gracias!


Subget_title_header()



Dim wb como objeto

Dim doc como objeto

Dim sURL como cadena

Dim lastrow siempre

últimafila = Hoja1.Células(Filas.Recuento, "A").End(xlUp).fila



Para i = 2 Para ultimo

Establecer wb = CreateObject("internetExplorer.Application")

sURL = Celdas(i, 1)



wb.navegar sURL

wb.Visible = Falso



Mientras wb.Ocupado

DoEvents

Encaminarse a



''Documento HTML

Establecer doc = wb.document



Celdas(i, 2) = doc.Título



En caso de error Ir a err_clear

Celdas(i, 3) = doc.GetElementsByTagName("h1"))(0).innerText

err_claro:

Si Err <> 0 Entonces

Err.Clear

Curriculum vitae Siguiente

Si terminar

wb.Salir

Rango (Celdas (i, 1), Celdas (i, 3)). Columnas. Ajuste automático

Siguiente i



End Sub




¡Gracias!
Este comentario fue minimizado por el moderador en el sitio
Estoy tratando de automatizar 1 libro de trabajo (BOM) cuando otro libro de trabajo (Estado de piezas) realiza cambios. El archivo de estado de las piezas se actualiza cada 15 minutos. ¿Necesito saber cómo automatizar una columna específica cuando ocurren estos cambios? Algunas ideas
Este comentario fue minimizado por el moderador en el sitio
Estoy usando el código a continuación para ocultar varias columnas según la selección de un cuadro desplegable ubicado en la celda C3, pero después de realizar un cálculo en cualquier parte de la hoja de trabajo, TODAS las columnas quedan NO OCULTAS. ¿Cómo puedo solucionar esto?

Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)

Columnas("D:F").Autoajustar

Dim Proj1 como cadena
Dim Proj2 como cadena
Dim Proj3 como cadena
Dim Proj4 como cadena
Dim Proj5 como cadena
Dim Proj6 como cadena
Dim Proj7 como cadena
Dim Proj8 como cadena
Dim Proj9 como cadena
Dim Proj10 como cadena

Proj1 = ActiveWorkbook.Sheets("Proyectos").Rango("A1").Valor
Proj2 = ActiveWorkbook.Sheets("Proyectos").Rango("A2").Valor
Proj3 = ActiveWorkbook.Sheets("Proyectos").Rango("A3").Valor
Proj4 = ActiveWorkbook.Sheets("Proyectos").Rango("A4").Valor
Proj5 = ActiveWorkbook.Sheets("Proyectos").Rango("A5").Valor
Proj6 = ActiveWorkbook.Sheets("Proyectos").Rango("A6").Valor
Proj7 = ActiveWorkbook.Sheets("Proyectos").Rango("A7").Valor
Proj8 = ActiveWorkbook.Sheets("Proyectos").Rango("A8").Valor
Proj9 = ActiveWorkbook.Sheets("Proyectos").Rango("A9").Valor
Proj10 = ActiveWorkbook.Sheets("Proyectos").Rango("A10").Valor

Dim xRG como rango
Dim xHRow como entero
Establecer xRG = Rango ("C3")
Si Not Intersect(Target, xRG) no es nada, entonces

Si Target.Value = Proj1 Entonces
Aplicación.Columnas("E:F").Oculto = Verdadero
Aplicación.Columnas("D").Oculto = Falso

ElseIf Destino.Valor = Proj2 Entonces
Rango("D:D, F:F").EntireColumn.Hidden = True
Aplicación.Columnas("E").Oculto = Falso

Si terminar
Si terminar
End Sub
Este comentario fue minimizado por el moderador en el sitio
Esto es exactamente lo que estaba buscando. Cuando un usuario ingresa un valor en una celda, se ejecutaría una macro de clasificación simple. La macro funciona bien por sí sola, pero obtengo un uso no válido de error de propiedad usando el código sugerido.

¿Cual podría ser el problema?
No hay comentarios publicados aquí todavía
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Seguinos

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