2017-03-28 29 views
0

範囲内のすべての画像を削除しようとしています。 Iオンライン以下のコードを発見したが、その行に型不一致エラーをスロー:画像を削除するときの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ピクチャに変更します。 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 -snippet-1 – PKatona

+0

@Jeeped、私は '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

'Dim pic as Picture'を完全に削除しようとしました – 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 
関連する問題