Detectar si una hoja sufrió alguna modificación

Quiero saber como detectar si una hoja sufrió alguna modificación. Pensé en usar : "Private Sub Worksheet_Change(ByVal Target As Range)", pero debería verificar en la hoja entera, celda por celda, según creo; y eso pondría muy pesada la planilla. Mi consulta esta dirigida a poder capturar el evento de modificación, o el cambio de estado que detecta excel cuando se modifica cualquier celda y se activa el "deshacer".

Desde ya muchas gracias.

Jose Riu

Buenos Aires

Argentina

Respuesta
1

T equivocas, worksheet change es un evento que se dispara cuando el usuario hace cambios en la hoja, y precisamente la variableTarget nos da el dato de la celda o rango q a cambiado. Es una variable de tipo rango con todas sus propiedades.

Target.value

Target. Row

Target. Column

Target. Address

Para detectar un cambio crea una variable publica de tipo boolean y dentro del evento change la estableces en true.

Estoy de acuerdo con ambas respuestas. Pero me extraña que no haya ninguna variable de sistema que haga lo mismo que me sugerís que haga manualmente con una variable boolean dentro del evento.

Si te refieres a una variable o propiedad que indique si ha habido un cambio en el libro, claro que existe, de hecho, si el libro tiene algún cambio y no ha sido guardado, la propiedad workbook. Saved será false, pero como indicabas "... el cambio de estado que detecta excel cuando se modifica cualquier celda y se activa el "deshacer"...", entonces seria el evento change.

Solo podrías controlar algún cambio con un reloj y comprobando periódicamente si la flag de cambios se ha activado, y aun asi, no tendrías la variable target como en el evento.

Todo claro. Pero lo que busco, mas precisamente, seria una propiedad worksheet.change; tal vez una mezcla entre la propiedad workbook.saved, y el evento worksheet.change.

No deseo controlar el evento cada vez que se modifique una celda, por lo que no me sirve el evento worksheet.change; ni tampoco me sirve la propiedad workbook.saved, ya que se pudo haber modificado otra hoja, y no la que quiero evaluar.

Espero que se comprenda lo que estoy buscando.

Desde ya muchas gracias.

Me tienes que explicar claramente que es lo que quieres hacer, ¿quieres controlar cuando el usuario realice cambios pero solo en una hoja en concreto?

si, pero no controlando el evento change, es decir, no quiero detectarla en el momento en que se realizo el cambio, sino poder consultar en cualquier momento si una cierta hoja, sufrió cualquier modificación.

saludos.

Ok.

Para lo que quieres no existe ninguna variable global predefinida. Deberás programarlo tú mediante los eventos change de cada hoja y unas variables públicas, una por cada hoja, y en el evento change de cada hoja estableces la variable correspondiente en true o guardando el valor de target, así sabrías si ha habido alguna modificación en cada hoja y en que celda concretamente

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas