VBA代码删除图形时不删除数据有效性下拉框方法

推荐答案运行如下宏代码:Sub delpic()Dim pic As ShapeFor Each pic In ActiveSheet.Shapespic.DeleteNextEnd Sub 看效果,数据有效性下拉框是否不见了?看来数据有效性下拉框被当成图形文件被删除了。在C1、C2单元格分别设置数据有效性,再来运行下面的代码看看效果。Sub xsyxxname(......

工具/原料

  •  Excel

  •  VBA

方法/步骤

  1.  运行如下宏代码:

    Sub delpic()

    Dim pic As Shape

    For Each pic In ActiveSheet.Shapes

    pic.Delete

    Next

    End Sub 

    看效果数据有效性下拉框是否不见了?

  2. 看来数据有效性下拉框被当成图形文件被删除了。在C1、C2单元格分别设置数据有效性再来运行下面代码看看效果。

    Sub xsyxxname()

    Dim pic As Shape, i As Integer

    i = 2

    For Each pic In ActiveSheet.Shapes

    Range("b1") = ActiveSheet.Shapes.Count

    Range("b" & i) = pic.Name

    i = i + 1

    Next 

    End Sub

    可以很明显看到虽然我们在C1、C2二个单元格分别设置了数据有效性但是用shapes.count得出结果却是1所以我们可以得出这样结论无论工作表中设置了多少个数据有效性VBA都只会当做一个shape处理;数据有效性名称用Name得到是Drop Down 1是否会有规律可循呢?我们看下一步。

  3.  将C1、C2单元格数据有效性删除然后保存重新打开Excel文件再在C1、C2单元格设置数据有效性然后运行xsyxxname宏代码查看结果。发现Name得到有效性名称变化为Drop Down 2如此看来数据有效性名称都是以Drop Down X这样格式名称。其默认名称里面必定包含Drop Down字样。

     

  4.  我们把第一步宏代码更改为如下:

    Sub delpic()

    Dim pic As Shape

    For Each pic In ActiveSheet.Shapes

    If InStr(1, pic.Name, "Drop Down") = 0 Then pic.Delete

    Next

    End Sub

    这样就不会再把数据有效性框删掉了。

郑重声明:本站所有作品均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系系我们修改或删除。