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

2025-10-07 11:40:46

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

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢