¿Cómo ejecutar macro al cambiar el valor de una celda?

Tengo este código y me gustaría que se ejecute al cambiar el valor de la celda a2

Range("b47:e47").Select
finfila = Selection.Row + Range("a2").Value
Selection.AutoFill Destination:=Range("b47:e" & finfila), Type:=xlFillDefault

entonces como quedaría para que al cambiar el valor de a2 ejecute este código.

Espero ser claro.

Trabajo con excel 2007.

1

1 respuesta

1
Respuesta de

Hola:

Para que se ejecute al cambio del valor de una celda se coloca en el evento Change de la hoja en cuestión.

Desde el Editor, doble clic sobre el objeto HOJA que corresponda y allí copiá esta rutina:

Private Sub Worksheet_Change(ByVal Target As Range)
'se ejecuta solo al ingresar datos en col A2
If Target.Address <> $A$2 Then Exit Sub

'aquí tus instrucciones reemplazando A2 por Target

End Sub

Podes leer más sobre dónde colocar y cómo ejecutar las macros en la sección Macros de mi sitio.

Sdos

Elsa

http://aplicaexcel.galeon.com/manuales.htm

Hola gracias por responder pero tengo un problema con el código que me envío al poner el signo $ me dice "error de compilación el carácter no es valido".

Tiene razón Elsa no me percate de las comillas, gracias. Pero que pasa si en A2 lo que hay es una formula y lo que cambia es el resultado de la formula, lo que quiero como dato para que arrastre es el resultado de esa formula. Se podrá tomar como referencia ese resultado.

Gracias de nuevo.

Si, disculpa, olvidé las comillas (pero esto ya debieras saberlo, las ref van entre comillas ;)


If Target.Address <> "$A$2" Then Exit Sub

Sdos

Elsa

http://aplicaexcel.galeon.com/manuales.htm

No hay aún en Excel evento que controle el 'cambio' de una celda si es como resultado de fórmula, solo se usa ese evento cuando es el usuario el que la modifica.

Podrías controlar el evento Calculate.... pero ni intentes... por cada cambio en 'cualquier celda' se controla el cálculo y se te hará un proceso denso.

Necesitarás controlarlo en otro cambio o en otro evento. Puede ser un atajo de teclado que lo ejecutes cuando creas necesario.

Sdos

Elsa

Ok gracias me parecía que no era posible o que era demasiado complicado por lo que había estado leyendo.

Entonces para concluir u no dar mas vueltas como seria el código para que la macro se ejecute al cambiar el valor de "A2", pero que tome como referencia para arrastrar el valor de "c2", seria posible o no.

Yo cambiaría de forma manual el valor de "A2".

No se si me explico.

Si cambiás manualmente el valor en A2 se ejecutará la macro ya dejada antes, y que amplío aquí:

En el Editor, seleccioná de la col a tu izquierda el objeto HOJA donde vayas a hacer este trabajo, y allí copiá esto:

Private Sub Worksheet_Change(ByVal Target As Range)
'se ejecuta solo al ingresar datos en col A2
If Target.Address <> $A$2 Then Exit Sub


'aquí tus instrucciones dejadas al inicio de la consulta

Range("b47:e47").Select
finfila = Selection.Row + Range("C2").Value
Selection.AutoFill Destination:=Range("b47:e" & finfila), Type:=xlFillDefault
End Sub

Esto es lo que tenías, entiendo que es ahí donde que´res colocar el valor de C2

Sdos

Elsa

http://aplicaexcel.galeon.com/manuales.htm

Muchas gracias por grandes respuestas, me fueron de gran ayuda.

muchas gracias por su ayuda fue de gran utilidad.

no olvides finalizar entonces....

Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Microsoft Excel o hacer tu propia pregunta: