Excel
VBA
运行如下宏代码:
Sub delpic()
Dim pic As Shape
For Each pic In ActiveSheet.Shapes
pic.Delete
Next
End Sub
看效果
数据有效性下拉框是否不见了?
看来数据有效性下拉框被当成图形文件被删除了。在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
是否会有规律可循呢?我们看下一步。
将C1、C2单元格数据有效性删除
然后保存
重新打开Excel文件
再在C1、C2单元格设置数据有效性
然后运行xsyxxname宏代码
查看结果。发现Name得到有效性名称变化为Drop Down 2
如此看来数据有效性名称都是以Drop Down X这样格式
名称。其默认名称里面必定包含Drop Down字样。
我们把第一步
宏代码更改为如下:
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
这样就不会再把数据有效性框删掉了。