1、运行如下宏代码:Sub delpic()Dim pic As ShapeFor Each pic In ActiveSheet.Shapespic.DeleteNextEnd Sub看效果,数据有效性下拉框是否不见了?
2、看来数据有效性下拉框被当成图形文件被删除了。在C1、C2单元格分别设置数据有效性,再来运行下面的代码看看效果。Sub xsyxxname()Dim pic As Shape, i As 朐袁噙岿Integeri = 2For Each pic In ActiveSheet.ShapesRange("b1") = ActiveSheet.Shapes.CountRange("b" & i) = pic.Namei = i + 1NextEnd 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 ShapeFor Each pic In ActiveSheet.ShapesIf InStr(1, pic.Name, "Drop Down") = 0 Then pic.DeleteNextEnd Sub这样就不会再把数据有效性框删掉了。