Undo mogelijk maken voor macro's in Excel VBA
Inleiding
De technieken die in dit artikel gebruikt worden zijn niet beschikbaar in Excel 97.
In Microsoft Word kan men wijzigingen die door VBA code in een document worden aangebracht standaard ongedaan maken. In Excel is dit helaas niet het geval. Vrijwel alle macro commando's legen de Undo "stack" en de acties zelf kunnen niet meer ongedaan worden gemaakt. Om dit toch mogelijk te maken, moet men code schrijven die:
- De vorige staat van alles dat gewijzigd gaat worden opslaat;
- Een routine instelt die uitgevoerd moet worden wanneer de gebruiker voor "ongedaan maken" kiest;
- Die routine programmeren, die de wijzigingen die door de code zijn uitgevoerd weer ongedaan maakt, in omgekeerde volgorde.
Dit artikel wordt gedemonstreerd hoe twee klasse modules kunnen worden ingezet om een (min of meer) generieke "undo handler" te bouwen, welke in elk Excel VBA project kan worden ingezet.
Inhoud
Veelgestelde vragen
Wat is het probleem met de Undo-functie bij macro's in Excel VBA?
Waarom is de Undo-functionaliteit standaard wel beschikbaar in Microsoft Word maar niet in Excel?
Welke technieken zijn nodig om Undo mogelijk te maken voor macro's in Excel VBA?
Welke stappen moet je volgen om een Undo-handler te programmeren in Excel VBA?
Hoe kan de vorige staat van wijzigingen worden opgeslagen in een Undo-handler?
Wat doet de routine die wordt uitgevoerd wanneer de gebruiker kiest voor 'ongedaan maken'?
Hoe worden de wijzigingen in de Undo-handler ongedaan gemaakt?
Hoe kunnen klasse modules worden ingezet om een generieke Undo-handler te bouwen?
Is de beschreven Undo-handler toepasbaar in elk Excel VBA project?
Welke Excel-versie ondersteunt de technieken die in dit artikel worden beschreven niet?
