问题:
有的Excel工作簿内含有很多碎片化的数据有效性规则,多选后点击数据有效性菜单,会被提示因为有多个类型而需要清除,(如下图)。
只能每个工作表全选然后确认清除,操作起来比较麻烦。
万能的VBA,能不能一键删除所有数据有效性规则?
当然可以。先看下效果。
VBA程序效果:
Talk is cheap, show me the code.
VBA程序源码:
Sub deleteAllDataValidationsA() 'v 0.1 '2024-05-27 'ExcelVBA持续超越@头条 jeffreyjcli-at-qq.com
On Error Resume Next
If Not MsgBox("Delete all data validation rules in activeworkbook? " & vbCrLf & _
"是否删除当前工作簿所有数据有效性规则?", _
vbQuestion + vbYesNoCancel + vbDefaultButton1 + vbSystemModal) = vbYes _
Then Exit Sub
Application.ScreenUpdating = False
DateTime0 = Timer
For Each wst In ActiveWorkbook.Sheets
For Each rng In wst.UsedRange
rng.Validation.Delete
If Err.Number = 0 Then
ii = ii + 1
Else
Err.Clear
End If
Next
Next
DateTime1 = Timer
Application.ScreenUpdating = True
MsgBox " Done. Have deleted " & ii & " data validations. Time elapsed:" & vbCrLf & _
"完成. 已删除 " & ii & " 个数量数据有效性规则,共用时:" & vbCrLf & _
Round(DateTime1 - DateTime0, 3) & " s."
End Sub
拓展
不像条件格式管理对话框那样,Excel没有界面可以批量操作多个选区的数据有效性,
所以很难知道每个规则应用的具体范围。
其实可以创建VBA程序,将所有数据有效性规则显示出来,以方便管理;
还可以合并碎片化的数据有效性,使得每一列或相似区域的数据具有更好的一致性。
PS
如果需要批量处理多个工作簿,或者需要插件随时在任意工作簿一键运行的话,可以私信我。
OK. 分享完毕。感谢您的关注、点赞、收藏与点评。下期见~
#头条创作挑战赛##Excel##excel##Excel技巧##职场excel小技巧##vba#
《Excel VBA 从入门到封神系列之进阶篇》:Excel工作簿大瘦身:一键删除无用的数据验证