2017-03-28 1 views
0

범위의 모든 그림을 삭제하려고합니다. 나는 온라인으로 아래의 코드를 발견하지만은 행에 형식 불일치 오류를 던지고 :그림을 삭제할 때 VBA 유형이 일치하지 않습니다.

For Each pic In ws.Pictures 

모든 입력 또는 대체 코드가 많이 감사합니다.

Sub clearPics() 
Dim s As String 
Dim pic As Picture 
Dim rng As Range 

Set ws = Worksheets("sort") 
Set rng = ws.Range("c:c") 

For Each pic In ws.Pictures 
    With pic 
     s = .TopLeftCell.Address & ":" & .BottomRightCell.Address 
    End With 
    If Not Intersect(rng, ws.Range(s)) Is Nothing Then 
     pic.Delete 
    End If 
Next 

End Sub 

감사합니다, JJ

+1

저는 항상 이런 종류의 코드로 고생하고 있지만 'Dim pic as Shape'으로 변경하면 문제가 해결됩니까? –

+0

Microsoft worksheet.pictures 문서에 개체가 표시됩니다. Dim Picture를 Object로 변경했습니다. https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.pictures(v=vs.120).aspx?cs-save-lang=1&cs-lang=vb#code @nepet-1 – PKatona

+0

@ 지프, "In ws.Pictures"부분이 그걸 처리 하겠지만 완전히 테스트되지 않았기 때문에 나는 알지 못한다. –

답변

0

당신은 그림으로 그림을 선언합니다. Dim pic의 이름을 Dim pic1과 같은 것으로 바꾸고 지금 사용해보십시오. 아니면 그냥 그 줄을 제거하십시오.

내가 생각하는 것은 그림이 그림 형식이라는 것입니다. 그러나 모든 ws.pictures가 형식으로 반환하는 것은 그림과 일치하지 않습니다.

+0

True 'dat. 나는 단순히 typedef를 제거하고'Dim pic As Picture'를'Dim pic' 또는'Dim pic As Variant'로 바꾸는 것으로 나타났습니다. – Jeeped

+0

시도했지만 변경 없음 – joell

+0

'그림을 어둡게 찍어 봤음'을 완전히 시도했습니다. – noyanc

0

아래 코드는 시트의 그림 만 삭제합니다. 사진의 경우 Shape.Type = 11을 확인하십시오.

Sub clearPics() 
Dim shp As Shape 

    For Each shp In Worksheets("sort").Shapes 

     If shp.Type = 11 Then 
       shp.Delete 
     End If 

    Next shp 
End Sub 
관련 문제