Foros del Web » Soporte técnico » Ofimática »

macros: cambio en una celda

Estas en el tema de macros: cambio en una celda en el foro de Ofimática en Foros del Web. hola gente, currando como yo en puente? tengo una dudilla: he desarrollado una macro en excel, y quiero que se active cuando el contenido de ...
  #1 (permalink)  
Antiguo 20/03/2009, 01:32
 
Fecha de Ingreso: marzo-2009
Mensajes: 7
Antigüedad: 15 años, 1 mes
Puntos: 0
macros: cambio en una celda

hola gente, currando como yo en puente?

tengo una dudilla: he desarrollado una macro en excel, y quiero que se active cuando el contenido de una celda cambie, googleando por ahi he visto que hay una función que hace algo parecido, os pego el codigo:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$AE$1" Then Funcion

End Sub



De esta manera, si la celda AE1 cambia, la función Funcion se ejecuta, peeero, solo se ejecuta si cambias el valor de AE1 manualmente y luego pulsas Intro... lo que pasa es que yo en AE1 tengo un sumatorio que se va actualizando dinámicamente, y aunque AE1 cambia de valor, el evento este de Excel no lo detecta...

alguna idea? muchas gracias de antemano y un saludo a todos!
  #2 (permalink)  
Antiguo 20/03/2009, 09:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: macros: cambio en una celda

Dependiendo de lo que quieras hacer puedes usar el evento Calculate()
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 20/03/2009, 13:23
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Respuesta: macros: cambio en una celda

En mi blog de excel hablé precisamente este miércoles, de un problemilla con un caso parecido. Microsoft propone un código para ejecutar macros en función de si cambia el valor de determinada celda, pero esa solución propuesta, no se ejecutaba al editar una celda y pulsando a continuación las teclas de desplazamiento, en lugar de la tecla intro. Aparte de eso, cuando editabas la celda superior, se ejecutaba el macro.

Podéis ver mi propuesta de solución (sencilla, por otro lado), en alguno de los blogs que salen por aquí: http://www.google.es/search?hl=es&q=...el&btnG=Buscar ...No doy más pistas, para que David el Grande no me acuse de spammer
  #4 (permalink)  
Antiguo 20/03/2009, 14:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: macros: cambio en una celda

Cita:
Iniciado por 3pies Ver Mensaje
Podéis ver mi propuesta de solución (sencilla, por otro lado), en alguno de los blogs que salen por aquí: http://www.google.es/search?hl=es&q=...el&btnG=Buscar ...No doy más pistas, para que David el Grande no me acuse de spammer
Vamos, ya suelta el enlace de una vez, que de todos modos te acuso de promocionar a Google .

Saludos .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 20/03/2009, 14:16
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Respuesta: macros: cambio en una celda

Cita:
Iniciado por David el Grande Ver Mensaje
Vamos, ya suelta el enlace de una vez, que de todos modos te acuso de promocionar a Google .

Saludos .


Solución: [ ( ( 66 x 12 ) + 12345 - 37 ) / 2000 ] - 5,55

PD: No vale usar excel

Salu2 master
  #6 (permalink)  
Antiguo 20/03/2009, 14:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: macros: cambio en una celda

http://hojas-de-calculo-en-excel.blo...iar-celda.html

__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 24/03/2009, 10:31
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
De acuerdo Respuesta: macros: cambio en una celda

Hola! Amigos. Una alternativa podría ser:
a) Clic con botón derecho en la solapa de la hoja a controlar y seleccionar la opción: Ver código

b) Copiar y pegar lo siguiente:

Código:
Private Sub Worksheet_Calculate()
Static MiValor As Double
If MiValor = 0 Then MiValor = [a1]
If MiValor = [a1] Then Exit Sub

MsgBox "Cambio en A1"
MiValor = [a1]
End Sub
c) Cerrar VBA y volver a Excel.

El código anterior supervisa modificaciones en la celda [A1] de la hoja considerada siendo que [A1] contiene una fórmula que depende de los valores de otras celdas.
Al detectar el cambio se ejecuta: MsgBox "Cambio en A1", mientras que MiValor = [a1] almacena el nuevo valor a efectos futuros.

Como "Static MiValor As Double" inicializa a la variable "MiValor" en cero, ése es el único valor que el procedimiento no controla.

Se trata de un ejemplo sencillo: luego hay que adaptarlo para otros usos.

Saludos, Cacho.
  #8 (permalink)  
Antiguo 24/03/2009, 10:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: macros: cambio en una celda

Ya decía yo al comienzo que se puede usar el evento Calculate() .

Buen aporte mrocf.

También, añadiendo, si el valor del resultado calculado no es numérico, se puede usar una variable String para el control .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 24/03/2009, 10:43
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
Respuesta: macros: cambio en una celda

Ja ja ja !!!
Así es: también se puede utilizar

Código:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
End Sub
pero... para qué nos vamos a complicar, ¿no?

Saludos, David.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:00.