专家,我使用的是具有多个列的Excel工作表。每列都有验证规则。我要在选择整个工作表中的任何行时删除这些验证规则。当我选择该行时,我将从下拉菜单中将值放入G中。根据G列的值,应清除整个行验证规则。该表看起来像这样。
我正在使用的代码如下。
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
它工作正常,但删除了整个工作表。但是我想删除我正在处理的仅验证行。
谢谢
答案 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
只要您更改指定工作表的“ 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