programing

시트를 삭제하고 대신 사용자 지정 메시지를 사용하여 Excel이 사용자에게 확인을 요청하지 않도록 합니다.

mailnote 2023. 5. 21. 11:50
반응형

시트를 삭제하고 대신 사용자 지정 메시지를 사용하여 Excel이 사용자에게 확인을 요청하지 않도록 합니다.

일련의 이벤트를 트리거하는 버튼이 있습니다.이러한 이벤트 중 하나는 시트를 삭제하는 것입니다.사용자가 삭제하기 전에 전체 프로세스를 확인하라는 사용자 정의 YES/NO 메시지를 팝업합니다.

그런 다음 시트를 삭제하는 하위 이벤트가 발생하고 Excel이 시트 제거를 확인하는 자체 창이 나타납니다.문제는 사용자가 해당 시점에서 "아니오"라고 말하면 응용프로그램이 일관되지 않은 상태로 설정된다는 것입니다.

시트 삭제 확인을 요청하는 엑셀을 우회하려면 어떻게 해야 합니까?

다음을 사용하여 Excel의 기본 디스플레이 경고 매개 변수를 변경할 수 있습니다.

Application.DisplayAlerts = False

프로세스가 끝날 때 표준 동작을 복원하는 것을 잊지 마십시오.

Application.DisplayAlerts = True

Excel 2016을 사용하여 이 문제를 접했는데 놀랍게도 Display경고를 사용할 수 없습니다.다른 사람이 이런 경험을 했는지는 잘 모르겠습니다.워크시트의 설명에 따르면, 왜 그런지는 아직 확실하지 않지만, 이 스레드를 읽습니다.삭제 방법(여기):

워크시트를 삭제하면 이 메서드는 삭제 확인을 요청하는 대화 상자를 표시합니다.이 대화 상자는 기본적으로 표시됩니다.워크시트 개체에서 호출되면 Delete 메서드는 대화 상자에서 Cancel을 클릭한 경우 False이고 Delete를 클릭한 경우 True인 부울 값을 반환합니다.

Excel 2016에서는 애플리케이션을 사용합니다.DisplayAlerts가 False로 설정되었습니다. 삭제 후(또는 삭제 전)에도 경고를 계속 표시합니다.

아직 진정한 작품을 찾지 못했기 때문에, 저는 단순히 삭제하고 싶은 시트를 사용하여 "사라지게" 만들고 있습니다.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

(코드는 확인되지 않은 초안입니다. 최종 오류는 다음과 같이 처리될 수 있습니다.on error resume next대부분)

이상적인 것과는 거리가 멀지만 필요한 작업을 수행합니다(물론 메모리를 더 많이 사용해야 함).이 답변을 질문으로 바꿔서 누군가 엑셀 2016에 대해 더 나은 아이디어가 있는지 알아봐야 할 것 같습니다.

보고서 시트 없이 모든 시트 삭제 **

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

언급URL : https://stackoverflow.com/questions/8923694/delete-sheets-and-avoid-excel-asking-the-user-to-confirm-using-custom-messages

반응형