编程技术文章分享与教程

网站首页 > 技术文章 正文

Excel VBA:一键删除所有数据有效性规则

hmc789 2024-11-19 05:01:33 技术文章 8 ℃

问题:

有的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工作簿大瘦身:一键删除无用的数据验证

标签列表
最新留言