Las macros de Excel no parecen permitir el uso de "deshacer" después de ejecutarlas. ¿Hay alguna manera de hornear la funcionalidad undo
en una macro de VBA en Excel?Deshacer de edificio en una macro de Excel de VBA
Respuesta
Excel VBA tiene la función Application.OnUndo
de manejar esto:
Public Sub DoSomething
... do stuff here
Application.OnUndo "Undo something", "UnDoSomething"
End Sub
Public Sub UnDoSomething
... reverse the action here
End Sub
Siempre guardo inmediatamente antes de ejecutar mis macros (al menos durante las pruebas) y, si todo va en forma de pera, puedo salir sin guardar y volver a abrirlo.
Al hornear en la macro real, básicamente tendrá que registrar el estado antiguo de todo lo que cambia (contenido de la celda, fórmulas, formateo, etc.) en una lista y luego tener una macro para deshacer que reproduce esa lista orden inverso.
Por ejemplo si su macro cambia una célula contenidos C22 de "3" a "7" y el formato de a "número "general", 2 decimales), su lista sería:
C22 value 3
C22 format general
Jugar este de nuevo en orden inverso (con otra macro) sería revertir los cambios
usted podría tener una hoja adicional para mantener toda la macro deshacer la información tal como:.
Step Cell Type Value
---- ---- ----- -------
1 C22 value 3
C22 format general
2...
no integraría muy bien con el deshacer 'real' desafortunadamente, pero no creo que haya ninguna forma de evitarlo.
Mi idea es bastante simple, como la primera línea de la macro guardar una copia en un directorio de copia de seguridad y cierre ese libro y volver a abrir el original. Si no le gustan los resultados de su ejecución macro, abra el libro guardado. Mantenlo simple ¿eh?
- 1. Excel VBA - Ejecutar macro antes de guardar
- 2. ¿Cómo generar XML desde una macro de Excel VBA?
- 3. ¿Cómo programar código una función 'deshacer' en Excel-Vba?
- 4. ¿Cómo configurar una prueba unitaria en VBA Excel Macro?
- 5. Cómo bucle de filas con macro de Excel VBA?
- 6. EXcel VBA: Macro de Excel para crear una tabla en PowerPoint
- 7. Incrustar un proceso R en una macro de VBA
- 8. Subcadena de Excel VBA
- 9. Escribir una fórmula en una celda de Excel usando VBA
- 10. Macro independiente de Excel
- 11. macro VBA Excel escribiendo un entero de entrada en una celda
- 12. pueblan valores únicos en una matriz de VBA desde Excel
- 13. Leer historial de deshacer en VBA
- 14. ¿Cómo puedo usar JavaScript dentro de una macro de Excel?
- 15. Cerrar la aplicación de Excel usando VBA
- 16. Uso del símbolo # (hash) en VBA Macro
- 17. ¿Cómo hacer una macro que se ejecuta periódicamente en Excel?
- 18. Abrir/activar documentos de Word en una macro de VBA
- 19. Excel vba - cadena de conversión al número
- 20. Crear una tabla SQL de Excel VBA
- 21. ¿Combina varias celdas en una en Excel con macro?
- 22. matriz en Excel VBA
- 23. ¿Podemos escribir una macro en C# para Excel
- 24. OnClick en Excel VBA
- 25. Macro de VBA para comparar todas las celdas de dos archivos de Excel
- 26. Excel VBA - salida de bucle
- 27. CopyOrigin en Insertar en Excel VBA
- 28. Excel VBA Error en tiempo de ejecución '13' No coincide
- 29. Los datos de Bloomberg no se completan hasta que finaliza la macro de Excel VBA
- 30. macro de VBA en Excel para ejecutar la declaración Insertar SQL
Aunque esto ayudará a deshacer las acciones del primer sub, lamentablemente aún se pierde el "historial" de acciones de deshacer que pueden haber estado disponibles antes de ejecutar el sub. Si alguien sabe cómo resolver ese problema, sería una gran ayuda. –
@ExcelDevelopers te refieres a [aquí] (http://www.jkp-ads.com/Articles/UndoWithVBA00.asp) – Reafidy