Tôi đã gặp sự cố này khi sử dụng Excel 2016 và đáng ngạc nhiên là DisplayAlerts vô dụng. Không chắc chắn nếu có ai khác đã trải nghiệm điều này. Tôi vẫn không chắc chắn là tại sao, nhưng đọc thread này, theo nhận xét của các phương pháp Worksheet.Delete (here):
Khi bạn xóa một Worksheet, phương pháp này sẽ hiển thị một hộp thoại sẽ nhắc người dùng xác nhận xóa. Hộp thoại này được hiển thị theo mặc định. Khi được gọi trên đối tượng Worksheet, phương thức Delete trả về một giá trị Boolean là False nếu người dùng nhấn Cancel trên hộp thoại hoặc True nếu người dùng nhấn Delete.
Trong Excel 2016, mặc dù Application.DisplayAlerts được đặt thành False, nó vẫn hiển thị cảnh báo sau (hoặc thay vì trước) xóa.
tôi đã không tìm thấy một công việc thực sự xung quanh bài viết nào, vì vậy tôi chỉ đơn giản là làm cho tờ Tôi muốn xóa "biến mất" sử dụng một vòng lặp for each
:
Sht.UsedRange.clear For each shp in sht.Shapes shp.Delete Next For each nm in sht.Parent.Names if nm.RefersToRange.Parent is sht then nm.Delete Next sht.visible = xlSheetVeryHidden
(mã là một dự thảo không được kiểm soát ; các lỗi cuối cùng có thể được xử lý với một số ít nhất là on error resume next
)
Nó rất lý tưởng, nhưng nó làm những gì tôi cần làm (với chi phí bộ nhớ nhiều hơn, chắc chắn). Có lẽ tôi nên trả lời câu trả lời này thành câu hỏi và xem ai đó có ý tưởng hay hơn cho Excel 2016.
Có thể đó chỉ là tôi, nhưng tôi muốn * khôi phục * giá trị cũ thay vì đặt thành 'True'. Tức là 'oldvalue = Application.DisplayAlerts',' Application.DisplayAlerts = False', 'sheet.Delete',' Application.DisplayAlerts = oldvalue'. –
@ Andre - Liên lạc đẹp, hãy nhớ điều gì đó cần lưu ý khi thay đổi cài đặt ứng dụng, bạn không bao giờ biết những gì họ đã bắt đầu và có thể ngăn chặn việc gỡ lỗi sau này. –