Excel makroları, çalıştırdıktan sonra "geri al" işlevinin kullanılmasına izin vermiyor gibi görünüyor. Excel'de bir VBA makrosuna undo
işlevselliğini pişirmenin bir yolu var mı?Bir Excel VBA Makinesine Geri Dönme Yapılandırma
cevap
Excel VBA bu işlemek için Application.OnUndo
işlevi vardır: Makro ilk satırı sonra bir yedek dizindeki bir kopyasını saklamanızı çalışma kitabını kapatın ve orijinali yeniden olarak
Public Sub DoSomething
... do stuff here
Application.OnUndo "Undo something", "UnDoSomething"
End Sub
Public Sub UnDoSomething
... reverse the action here
End Sub
Makrolarımı çalıştırmadan önce her zaman hemen kaydetmeliyim (en azından test sırasında), her şey armut şeklinde giderse, kaydetmeden çıkıp yeniden açabilirim.
Gerçek makroda pişirirken, bir listedeki tüm değişikliklerin (hücre içeriği, formüller, biçimlendirme ve benzeri) eski halini temel olarak kaydetmeniz ve daha sonra bu listeyi yürüten bir geri alma makrosuna sahip olmanız gerekir. Ters sipariş. Örneğin
makro için "7" "3" Bir hücreyi C22 içeriği değiştirir ve "genel" den "sayısı 2 ondalıklar) biçimlendirme, listeniz olacaktır:
C22 value 3
C22 format general
bu Çalma geri (başka makro ile) ters sırada değişiklikleri geri istiyorum
Sen makro tutmak için bir bütün ekstra sayfanız var gibi bilgileri silebilir.
Step Cell Type Value
---- ---- ----- -------
1 C22 value 3
C22 format general
2...
Bu entegre olmaz maalesef 'gerçek' ile çok iyi, ama bunun etrafında bir yol olduğunu düşünmüyorum.
Benim düşünce, oldukça basittir. Makro çalışmanızın sonuçlarını beğenmezseniz, kaydedilen çalışma kitabını yukarı çekin. Basit tut, ha?
Bu, ilk alt eylemleri geri almanıza yardımcı olacaktır, ancak ne yazık ki hala alt çalıştırmadan önce mevcut olan eylemleri geri alma "geçmişini" kaybedersiniz. Eğer herkes bu sorunu nasıl çözeceğini biliyorsa, gerçek bir nimet olurdu. –
@ExcelDevelopers gibi kastediyorum [here] (http://www.jkp-ads.com/Articles/UndoWithVBA00.asp) – Reafidy