Xóa Trang tính trong Macro (Microsoft Excel)
Hầu hết các lệnh Excel đều có sẵn để sử dụng trong các macro của bạn, miễn là bạn biết các lệnh VBA thích hợp để hoàn thành nhiệm vụ trong tầm tay. Bạn có thể sử dụng lệnh macro sau để xóa trang tính đang hoạt động:
ActiveSheet.Delete
Nếu bạn đưa ra lệnh trong macro của mình, bạn sẽ thấy rằng Excel tạm dừng macro và hỏi bạn xem bạn có chắc chắn muốn xóa trang tính hay không.
Khi bạn bấm vào Có, trang tính sẽ bị xóa và macro tiếp tục lại.
Tất nhiên, toàn bộ ý tưởng đằng sau macro là tự động hóa nhiều tác vụ bạn thực hiện một cách thường xuyên. Dừng lại và yêu cầu xác nhận có thể là cách an toàn để đi, nhưng nó không giúp ích gì nhiều cho nguyên nhân tự động hóa. Nếu bạn muốn trang tính bị xóa mà không cần tạm dừng, có một số điều bạn có thể làm. Đầu tiên, bạn có thể sử dụng phương thức SendKeys để mô phỏng việc nhấn phím Enter, tương tự như cách nhấp vào Có trong hộp thoại xác nhận. Tất cả những gì bạn cần làm là thêm một dòng trước dòng xóa trang tính:
Application.SendKeys ("{ENTER}") ActiveSheet.Delete
SendKeys không làm gì khác ngoài việc nhồi các phím bấm vào bộ đệm bàn phím, giống như khi bạn nhập chúng từ bàn phím. Do đó, dòng SendKeys phải đứng trước dòng Delete để phím Enter nằm trong bộ đệm trước khi cần.
Bất kỳ nhà phát triển macro lâu năm nào cũng có thể chỉ ra một số vấn đề tiềm ẩn khi sử dụng SendKeys, vấn đề chính là bạn không thể sử dụng nó để chỉ định rằng bạn đang chấp nhận tùy chọn Có trong hộp thoại xác nhận và chỉ trong hộp thoại đó. Tuy nhiên, không có khả năng xảy ra, nếu một số hộp thoại khác bật lên (có thể là do một chương trình khác tạo ra) vào đúng thời điểm, thì cách nhấn phím Enter sẽ được áp dụng cho hộp thoại đó, không phải cho hộp thoại bạn mong đợi.
Giải pháp tốt hơn là tắt khả năng cảnh báo của Excel trong thời gian ngắn. Hãy xem xét đoạn mã macro sau:
Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True
Mã này tắt cảnh báo, xóa trang tính, sau đó bật lại cảnh báo. Khi chúng bị tắt, Excel sẽ không hiển thị hộp thoại xác nhận, nhưng sẽ hoạt động như thể nó đã được hiển thị và tùy chọn mặc định (Có) được chọn.
Điều quan trọng là phải nhớ dòng mã cuối cùng được hiển thị ở đây. Nếu bạn không đặt thuộc tính DisplayAlerts trở lại True, thì Excel sẽ không hiển thị bất kỳ thông báo cảnh báo nào nữa, ngay cả sau khi macro đã kết thúc. Điều này có thể gây ra vấn đề, như bạn có thể tưởng tượng. Tốt nhất là chỉ đặt nó thành False trong thời gian ngắn bạn cần tắt cảnh báo.
Ngay cả khi DisplayAlerts được đặt thành False, bạn vẫn sẽ thấy thông báo lỗi, nếu một thông báo được tạo. Ví dụ: nếu bạn thực thi mã trên và chỉ có một trang tính duy nhất trong sổ làm việc, bạn vẫn sẽ thấy thông báo lỗi. (Điều này xảy ra vì bạn không thể xóa trang tính cuối cùng trong sổ làm việc.)
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (2293) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003.