2012-01-19 12 views
31

Tôi có nút kích hoạt chuỗi sự kiện. Một trong những sự kiện này là để xóa một trang tính. Trước khi anh ta xóa bất cứ điều gì, tôi bật lên tin nhắn YES/NO tùy chỉnh của tôi yêu cầu anh ta xác nhận toàn bộ quá trình.Xóa Trang tính và tránh Excel yêu cầu người dùng xác nhận, bằng cách sử dụng thông báo tùy chỉnh thay vì

Sau đó, đến sự kiện phụ xóa trang tính và Excel yêu cầu thông báo riêng của mình để xác nhận việc xóa trang tính. Vấn đề là nếu anh ta nói không vào thời điểm đó, điều đó đặt ứng dụng của tôi ở trạng thái không nhất quán.

Làm cách nào để bỏ qua Excel yêu cầu xác nhận xóa của trang tính?

Trả lời

52

Bạn có thể thay đổi hiển thị mặc định tham số cảnh báo của Excel sử dụng:

Application.DisplayAlerts = False 

đừng quên để khôi phục lại các hành vi tiêu chuẩn ở phần cuối của quá trình của bạn:

Application.DisplayAlerts = True 
+0

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'. –

+0

@ 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. –

1

ĐẾN XÓA TẤT CẢ CÁC BẢNG CÓ BẢNG BÁO CÁO "BÁO CÁO" **

Dim NM As String 
Dim CTS As Integer 
Dim CNT2 As Integer 
Dim CNT3 As Integer 
CNT3 = 1 
CNT2 = 1 
CTS = Sheets.Count 
Do Until CNT2 = CTS + 1 
NM = Sheets(CNT3).Name 
If Name = "Report" Then 
Range("A1").Select 
CNT3 = CNT3 + 1 
Else 
Sheets(NM).Select 
Application.DisplayAlerts = False 
ActiveWindow.SelectedSheets.Delete 
Application.DisplayAlerts = True 
End If 
CNT2 = CNT2 + 1 
Loop 
+1

Biến "Tên" phải là NM (Nếu NM = "Báo cáo" thì ... – meck373

0

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ác vấn đề liên quan