如何用vba删除单元格区域的同时删除该区域的所有图形对象?

最近在做一个项目的时候,发现用vba代码删除单元格区域内容时无法将放置在其上的图形对象同步删除。

这主要是由于该图形对象非excel内置形状,而是从外部插入的CAD等外来图形。

这时候提供一种思路:先获取要删除的单元格区域,然后遍历图形对象,判断图形对象是否位于该单元格区域内,如果是,则删除它,最后再删除单元格区域。

以下是一个示例代码:

Sub exceloffice()
    '作者QQ:1722187970,微信:xycgenius,公众号:水星Excel
    Dim owk As Worksheet
    Set owk = Excel.ActiveSheet
    With owk
        Dim oRng As Range
        Set oRng = .Range("a1:g15")
        Dim osp As Shape
        For Each osp In .Shapes
            If Not (Excel.Application.Intersect(osp.TopLeftCell, oRng) Is Nothing) Then
                osp.Delete
            End If
        Next
        Debug.Print oRng.Address
        oRng.Delete
    End With
End Sub
       

发表评论