Desaparece Deshacer tras Worksheet_Change

Esto me está trayendo de cabeza. No creo que le pueda pasar a más personas porque es algo absurdo, pero me pasa y no sé solucionarlo.

Tras ejecutarse el evento Change en una una hoja con alguna operación que cambie alguna celda desaparece el historial de deshacer (undo), se queda en blanco.

Y el ejemplo que pongo es bien sencillo. En la Hoja1 uno pongo esta macro.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("A1") Then Cells(1, 2) = Cells(1, 1)
End Sub

Al dar un valor a la celda A1 la celda A2 tomará el mismo y lo que me pasa es lo que decía, que desaparece el historial de Undo y no se puede deshacer nada.

Por eso que parece increíble, puedo pasar el fichero a quien quiera atenderme para ver si a él le pasa y puede ayudarme.

1 Respuesta

Respuesta
1

Pero la función deshacer desaparece después de la ejecución de cualquier macro, aunque la macro se ejecute en un módulo

Sub lo que sea()
Range("B7") = 2
End Sub

Desde el momento que se ejecuta la macro, la función deshacer se desactiva, supongo que sería complicado para excel, deshacer la secuencia de pasos de la macro, por eso desactiva la opción.

Saludos. Dam

Gracias por responder porque yo estaba a punto de cambiar el Office de 64 por el de 32, reinstalar Windows y no sé cuántas cosas más. Pero es que yo he buscado por Internet con frases como "Desaparece el Deshacer Excel" "Desaparece el Undo Excel" y no aparecía este problema. Entonces pensaba que solo me pasaba a mí porque algo tan grave tendría que aparecer en internet.

¿O sea, que es verdad que a ti también te pasa eso? Pues me parece algo fatal y no encuentro justificación para que un programa que se te come 2 gb del disco duro tenga ese fallo.

Pero es que es algo mucho más errático de lo que pueda parecer a primera vista.

Fijate en esta otra macro que se mete en la Hoja1 para cuando se modifica una celda

Private Sub Worksheet_Change(ByVal Target As Range)
' MsgBox ("paso")
If Not Intersect(Columns("A:A"), Target) Is Nothing Then
Application.EnableEvents = False
Range("B1") = 2
Application.EnableEvents = True
End If
End Sub

Los EnableEvents los puedes quitar si quieres, no tienen la culpa de nada, están para evitar el eco.

Si introduces datos en la columna B o superiores se mantiene el Deshacer, pero si los metes en la columna A desparece el Deshacer fulminantemente.

¡Ah, ya me doy cuenta! Parece que lo que hace desaparecer el Undo es que introduzcas un valor en una celda desde la macro. Puedes hacer otras cosas pero modificar celdas no.

¿Y a ti no te pasado con tantísimas preguntas contestadas que algún usuario te haya dicho que le desaparecía el Undo con una macro que le habías hecho? A mi me lo dijeron con una que hice y desde entonces no vivo tranquilo, me resulta imposible resolverlo.

¿Has pensado alguna vez en este problema y sabes si podría haber alguna solución?

Estoy ansioso de tu respuesta auténtico experto en la materia.

Muchos saludos.

Pero honor a quien honor merece, mis respetos para el verdadero experto en matemáticas y en excel no cantas nada mal.

Solamente una vez me cuestionaron lo del undo, y era algo similar, cada que modifican una columna se actualiza en automático con Worksheet_Change, otra columna con la fecha y la hora, me preguntaban, cómo deshacer y que al mismo tiempo la fecha y la hora también se borraran, pero ya sabía que cuando introduces un dato con una macro ya no puedes deshacerlo, así que le informe al usuario que simplemente no se podía.

Tal como lo pensé tendrías que construir el código para restaurar los valores anteriores, los comentarios son, que la pila (de memoria), se limpia cuando ejecutas la macro, tal como sucede cuando guardas un libro. Revisa esta rutina para regresar a los valores anteriores, pero solamente regresarán los inmediatos anteriores.

http://j-walk.com/ss/excel/tips/tip23.htm

Saludos. Dam

Está bien la macro, se puede usar para alguna situación donde deshacer a mano sea difícil, algo es algo. Pues la verdad que se me ha caído el mundo encima. Yo soy más bien del mundo de la programación general, no conozco todas las funciones de Excel y entonces me gustaría hacerlo todo con macros, pero no sabía que tuvieran este problema hasta que me lo advirtieron.

Muchas gracias por tu dedicación, a mi no se me da bien lo de buscar en ingles.

Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas