programing

양식 컨트롤을 제외한 Excel 워크시트의 모든 도형 삭제

powerit 2023. 10. 25. 23:50
반응형

양식 컨트롤을 제외한 Excel 워크시트의 모든 도형 삭제

버튼에 연결된 매크로가 워크시트의 사용자 입력 매개변수를 기반으로 동적 모양을 그리는 엑셀 워크시트가 있습니다.

시트를 정리하기 위해 새 매크로를 작성하거나 워크시트의 모든 모양을 삭제하려고 합니다.

아래 코드를 사용해보았는데 모양이 모두 삭제되는 것은 맞지만 버튼 형태의 컨트롤도 이 과정에서 삭제됩니다.워크시트의 모양(화살표, 텍스트 상자, 타원 등)만 제거할 수 있는 쉬운 방법이 있습니까?정말 고마워요!!!

Sub DeleteAllShapes()

Dim Shp As Shape

For Each Shp In ActiveSheet.Shapes
    Shp.Delete
Next Shp

End Sub

자동 모양 및 텍스트 상자만 삭제하려면 다음을 사용할 수 있습니다.

Sub DeleteAllShapes()

Dim Shp As Shape

For Each Shp In ActiveSheet.Shapes
    If Shp.Type = msoAutoShape Or Shp.Type = msoTextBox Then Shp.Delete
Next Shp

End Sub

또는 반대로 작업하여 삭제하지 않을 유형을 지정할 수도 있습니다.열거된 유형을 사용할 수 있지만 유형 이름을 사용하는 것이 더 읽기 쉽습니다.다음 토막글에서는 폼 컨트롤 및 OLE 컨트롤 개체를 제외한 모든 항목을 삭제합니다.

Sub DeleteAllShapes()

Dim Shp As Shape

For Each Shp In ActiveSheet.Shapes
    If Not (Shp.Type = msoOLEControlObject Or Shp.Type = msoFormControl) Then Shp.Delete
Next Shp

End Sub

MSO Shape Type의 전체 목록입니다.http://msdn.microsoft.com/en-us/library/office/aa432678(v=office.12).aspx

Ron de Bruin은 이 질문을 접하는 다른 사람과 관련이 있을 수 있는 좋은 스니펫 모음을 가지고 있습니다.http://www.rondebruin.nl/controlsobjectsworksheet.htm

도면 객체를 삭제하려는 것처럼 들립니다.

Jamie Bull의 훌륭한 조언을 바탕으로 먼저 Ron de Bruin 웹사이트의 관련 페이지에 대한 업데이트된 링크를 소개합니다.

워크시트에서 개체/컨트롤 삭제 또는 숨기기

그리고 두 번째로, 이 한 줄이 효과가 있다는 것을 알게 될 수도 있습니다.

ActiveSheet.DrawingObjects.Delete

언급URL : https://stackoverflow.com/questions/12789499/delete-all-shapes-in-excel-worksheet-except-form-controls

반응형