Problema con SheetChange. No se actualiza con referencia a otro libro

13/10/2006 - 10:32 por Carlos | Informe spam
Hola a todos,

Tengo dos libros: Libro1 y libro2, con una serie de valores. Cuando
modifico algo en el libro1, se guarda la ultima fecha en que se
modificó dicho libro. Eso lo hago con el evento SheetChange.
Hasta ahí todo normal. El problema viene porque en la hoja2 del
libro1, en la H82, se carga el valor que haya en la celda B13 del
libro2.

Que es lo que ocurre?? Pues que se me actualiza el valor del libro1
H82, pero no se dispara el evento SheetChange. He estado leyendo en el
foro y lo he intentado con el evento Calculate, pero tampoco he
encontrado la manera de que funcione.

Si no ando mal encaminado, tengo que capturar el valor de la celda H82
del libro1 antes de que me cargue el valor del Libro2, y comparar
despues con el nuevo valor a ver si ha cambiado.

espero que a alguien me pueda ayudar.
Saludos
Carlos

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
13/10/2006 - 10:46 | Informe spam
hola, Carlos !

... dos libros: Libro1 y libro2... Cuando modifico algo en el libro1, se guarda la ultima fecha en que se modifico dicho libro.
... lo hago con el evento SheetChange. Hasta ahi todo normal. El problema viene porque en la hoja2 del libro1
en la H82, se carga el valor que haya en la celda B13 del libro2.
Que es lo que ocurre?? Pues que se me actualiza el valor del libro1 H82, pero no se dispara el evento SheetChange.
He estado leyendo en el foro y lo he intentado con el evento Calculate, pero tampoco he encontrado la manera de que funcione.
Si no ando mal encaminado, tengo que capturar el valor de la celda H82 del libro1 antes de que me cargue el valor del Libro2
y comparar despues con el nuevo valor a ver si ha cambiado.



prueba usando el evento '_calculate' de la hoja2 del libro1 y una variable estatica que este 'tomando' los cambios
=> click-derecho en la pestaña de 'la hoja' => ver codigo... => copia las siguientes lineas
Private Sub Worksheet_Calculate()
Static Dato_Anterior
On Error Resume Next
If Range("h82") = Dato_Anterior Then Exit Sub
MsgBox "H82 ha cambiado de " & Dato_Anterior & " a " & Range("h82")
Dato_Anterior = Range("h82")
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Carlos
13/10/2006 - 13:29 | Informe spam
mmmmmmm, sonaba bien la idea, pero lo que ocurre ahora es que la
variable estatica toma valor 0 cuando abro el libro1, con lo que si la
celda h82, que es la que estabamos controlando vale 0, el mensaje no
salta. Si por el contrario vale distinto de cero, me salta el mensaje
que ha cambiado todo el rato, incluso si no lo ha hecho.
¿podria usar como solucion una celda auxiliar en la que cargue el
ultimo valor antes de cambiar y luego lo compare?

Esque sino cada vez que cierro el libro se me pone a 0 la variable
estatica.
No se que te parece la ide, Héctor
Gracias












Héctor Miguel ha escrito:

hola, Carlos !

> ... dos libros: Libro1 y libro2... Cuando modifico algo en el libro1, se guarda la ultima fecha en que se modifico dicho libro.
> ... lo hago con el evento SheetChange. Hasta ahi todo normal. El problema viene porque en la hoja2 del libro1
> en la H82, se carga el valor que haya en la celda B13 del libro2.
> Que es lo que ocurre?? Pues que se me actualiza el valor del libro1 H82, pero no se dispara el evento SheetChange.
> He estado leyendo en el foro y lo he intentado con el evento Calculate, pero tampoco he encontrado la manera de que funcione.
> Si no ando mal encaminado, tengo que capturar el valor de la celda H82 del libro1 antes de que me cargue el valor del Libro2
> y comparar despues con el nuevo valor a ver si ha cambiado.

prueba usando el evento '_calculate' de la hoja2 del libro1 y una variable estatica que este 'tomando' los cambios
=> click-derecho en la pestaña de 'la hoja' => ver codigo... => copia las siguientes lineas
Private Sub Worksheet_Calculate()
Static Dato_Anterior
On Error Resume Next
If Range("h82") = Dato_Anterior Then Exit Sub
MsgBox "H82 ha cambiado de " & Dato_Anterior & " a " & Range("h82")
Dato_Anterior = Range("h82")
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#3 Carlos
13/10/2006 - 14:05 | Informe spam
¿no existe ninguna funcion que compruebe si se han modificado las
deldas dependientes de otros libros al abrir el archivo?

del tipo SheetChange, pero que mire tambien las celdas dependientes :s
Gracias
Respuesta Responder a este mensaje
#4 Héctor Miguel
13/10/2006 - 19:29 | Informe spam
hola, Carlos !

no existe ninguna funcion que compruebe si se han modificado las deldas dependientes de otros libros al abrir el archivo?
del tipo SheetChange, pero que mire tambien las celdas dependientes :s



podrias usar modulos 'de clase'... pero tendrias que llevar un registro/control/... de las celdas 'apropiadas' -?-
y probablemente resultaria en codigos 'exhaustivos' [dependiento del numero de eventualidades que no hayas comentado] :))
y... [siempre y cuando] estando -todos- los libros 'involucrdos'... -> abiertos :D

saludos,
hector.
Respuesta Responder a este mensaje
#5 Héctor Miguel
13/10/2006 - 19:35 | Informe spam
hola, Carlos !

... sonaba bien la idea, pero lo que ocurre ahora es que la variable estatica toma valor 0 cuando abro el libro1
con lo que si la celda h82, que es la que estabamos controlando vale 0, el mensaje no salta.
Si por el contrario vale distinto de cero, me salta el mensaje que ha cambiado todo el rato, incluso si no lo ha hecho.
podria usar como solucion una celda auxiliar en la que cargue el ultimo valor antes de cambiar y luego lo compare? ...



[creo que] es la alternativa mas 'barata' [suponiendo que vas a 'controlar' pocas celdas-formula] :)
podrias usar una celda 'puente' [p.e. la celda 'A1' de una hoja 'oculta' ?]...

Private Sub Worksheet_Calculate()
With Worksheets("hoja oculta")
If Range("h82") = .Range("a1") Then Exit Sub
MsgBox "H82 ha cambiado de " & .Range("a1") & " a " & Range("h82")
.Range("a1") = Range("h82")
End With
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida