Tôi không hiểu tại sao trong Excel thì không Undo được khi dùng lệnh VBA nhưng nếu thật sự cần thiết thì có thể vẫn làm được, chỉ có điều hơi cầu kỳ.
Trước khi bạn thay đổi 1 giá trị nào đó thì bạn hãy lưu lại giá trị ban đầu và giá trị thay đổi vào 1 nơi nào đó giả sử là file.txt
Ví dụ:
A1 Value abc def
B3 FontBold True False
H9 FontSize 10 14
.................................................
Khi muốn Undo thì làm ngược trở lại và nhớ thứ tự Undo để có thể Redo, nếu việc lưu và đọc file text có trở ngại thì lưu vào sheet của file.xla cũng được.
Ý tưởng là thế, và có thể thực hiện được vì tôi đã từng làm cho chương trình cờ tướng.
Riêng về việc Undo Macro thì tôi cũng đã thấy trên Net nói đến rồi nhưng chưa nghiên cứu cụ thể ngta làm thế nào, bạn có thể tìm qua google để biết cụ thể.