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

 时间:2026-02-14 04:24:52

1、 运行如下宏代码:

Sub delpic()

Dim pic As Shape

For Each pic In ActiveSheet.Shapes

pic.Delete

Next

End Sub 

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

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

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,是否会有规律可循呢?我们看下一步。

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

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

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

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

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

  • Excel怎么制作动态文件访问路径?
  • excel怎么做按钮功能
  • EXCEL公式控制填充颜色
  • Excel中如何为数据透视表切片器应用样式
  • EXCEL单元格符合某个条件整行变色怎么设置
  • 热门搜索
    免抵退是什么意思 十大暴利养殖 运动图标 哭笑不得是什么意思 2019年是什么生肖年 体操运动员 什么是顺时针 鲜为人知是什么意思 维生素b族片 瘦腿的运动