基于G列值从工作表逐行删除验证规则

时间:2018-11-23 02:27:42

标签: excel

专家,我使用的是具有多个列的Excel工作表。每列都有验证规则。我要在选择整个工作表中的任何行时删除这些验证规则。当我选择该行时,我将从下拉菜单中将值放入G中。根据G列的值,应清除整个行验证规则。该表看起来像这样。

enter image description here

我正在使用的代码如下。

Sub RemoveDV()
    Dim ws As Worksheet
    For Each ws In Worksheets
        ws.Cells.Validation.Delete
    Next ws
    MsgBox ("All Validation Rules has been removed successfully")

End Sub

它工作正常,但删除了整个工作表。但是我想删除我正在处理的仅验证行。

谢谢

1 个答案:

答案 0 :(得分:0)

尝试一下:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Debug.Print Target.Address
    If Not Intersect(Target, Range("G:G")) Is Nothing And Target.Count = 1 Then
        If Target.Value = "The value that will trigger the validation clearing" Then
            Target.EntireRow.Validation.Delete
        End If
    End If
End Sub

enter image description here

只要您更改指定工作表的“ G”列中的值,并且新值=您想要的文本,这就会触发。

编辑:

假设您将值(将触发脚本的值)存储在同一页面上的某个范围内,则可以根据需要修改以下代码:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Arr: Arr = Application.Transpose(Range("$P$1:$P$12").Value) 'Values stored in "P1:P12"
    If Not Intersect(Target, Range("G:G")) Is Nothing And Target.Count = 1 Then
        If UBound(Filter(Arr, Target.Value)) > -1 Then
            Target.EntireRow.Validation.Delete
        End If
    End If
End Sub