Print side | Luk vindue

Undo efter paste makro

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=5040
Udskrevet den: 09.Maj.2024 kl. 17:48


Emne: Undo efter paste makro
Besked fra: ErnstJ
Emne: Undo efter paste makro
Posteringsdato: 17.Feb.2024 kl. 09:30
Jeg har en lille makro til at paste formatet:

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

som jeg aktiverer med en 'shift+ctrl M'

Når jeg har brugt denne kan jeg ikke lave en 'undo'. Det kan jeg hvis jeg laver paste operationen manuelt. 

Er der en måde hvor jeg kan 'aktivere' undo før eller efter eller i selve selection.pastespecial operationen i makroen?



Svar:
Besked fra: maxzpad
Posteringsdato: 19.Feb.2024 kl. 11:43
Undo er ikke muligt, når først makroen er kørt færdig.
En mulighed er at indbygge et spørgsmål i makroen, som giver brugeren mulighed for at fortryde, f.eks.

If MsgBox("Vil du fortryde?", vbYesNo+vbQuestion,"Fortryd?") = vbYes then Application.Undo

Måske andre har bedre forslag.


Besked fra: EXCELGAARD
Posteringsdato: 20.Feb.2024 kl. 08:58
Kørsel af makro nulstiller 'UnDo' stakken, og man kan ikke lave 'UnDo' efter en makro kørsel.

Forklaringen på dette er ret indlysende: En makro kan lave 1000vis af ændringer i et (og, endda flere) regneark på mindre et sekund. Skulle computeren 'huske' alle disse operationer og ændringer undervejs, vil makroerne komme til at køre meget langsomt, og computeren vil hurtigt løbe tør for hukommelse.  Af samme årsag 'husker' GUI interfacet også kun 100 'UnDo' handlinger, hvorefter man ikke kan 'UnDo' flere gange.  En makro vil MEGET hurtigt kunne ramme dette loft på 100 'UnDo' handlinger.

Hvis man på forhånd ved, at det drejer sig om få simple data, der skal ændres, og man vil have mulighed for 'UnDo' kan man evt. lade sin makro gemme disse data først, før ændringerne, og lade en anden 'HotKey' kombination foretage 'Undo' ved at indsætte de gamle data igen via en anden makro.


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.



Print side | Luk vindue