Macro Excel dường như không cho phép sử dụng "hoàn tác" sau khi chạy chúng. Có cách nào để nướng chức năng undo
vào macro VBA trong Excel không?Hoàn tác xây dựng thành macro VBA Excel
Trả lời
Excel VBA có Application.OnUndo
chức năng để xử lý này:
Public Sub DoSomething
... do stuff here
Application.OnUndo "Undo something", "UnDoSomething"
End Sub
Public Sub UnDoSomething
... reverse the action here
End Sub
Tôi luôn luôn lưu ngay lập tức trước khi chạy các macro của mình (trong khi thử nghiệm ít nhất), nếu mọi thứ có hình quả lê, tôi chỉ có thể thoát mà không lưu và mở lại.
Nướng nó thành macro thực, bạn sẽ phải ghi lại trạng thái cũ của mọi thứ thay đổi (nội dung ô, công thức, định dạng vv ..) trong danh sách sau đó có macro hoàn tác phát lại danh sách đó thứ tự ngược lại.
Ví dụ nếu macro của bạn thay đổi một tế bào nội dung C22 từ "3" thành "7" và định dạng từ "chung" thành "số, 2 số thập phân), danh sách của bạn sẽ là:
C22 value 3
C22 format general
Playing này trở lại theo thứ tự ngược (với vĩ mô khác) sẽ phục hồi các thay đổi
Bạn có thể có một tờ toàn bộ thêm để giữ vĩ mô undo thông tin như:.
Step Cell Type Value
---- ---- ----- -------
1 C22 value 3
C22 format general
2...
Nó sẽ không tích hợp rất tốt với sự thật 'hoàn tác' thật không may, nhưng tôi không nghĩ có bất kỳ cách nào xung quanh điều đó.
Suy nghĩ của tôi là khá đơn giản, như dòng đầu tiên trong macro của bạn lưu một bản sao trong một thư mục sao lưu sau đó đóng workbook đó và mở lại bản gốc. Nếu bạn không thích kết quả chạy macro của mình, hãy kéo sổ làm việc đã lưu lên. Giữ nó đơn giản hả?
Mặc dù điều này sẽ giúp hoàn tác tác vụ của phụ đầu tiên, rất tiếc bạn vẫn mất "lịch sử" của các tác vụ hoàn tác có thể đã có sẵn trước khi chạy phụ. Nếu có ai biết cách giải quyết vấn đề đó thì đó sẽ là một lợi ích thực sự. –
@ExcelNhà phát triển bạn có ý nghĩa như [ở đây] (http://www.jkp-ads.com/Articles/UndoWithVBA00.asp) – Reafidy