Excel 清除从属单元格和具有验证列表的单元格
我需要一些帮助。我正在建立一个包含多个验证列表的电子表格。每个验证列表都有多个链接到它们的验证列表(依赖项)。当我更改第一个验证列表时,我需要清除依赖于它的所有单元格(如果它们附加了验证列表) 我正在尝试创建一个足够动态的宏,这样我就不需要命名范围(我有太多的方法可以这样做)。基本上,如果activecell发生更改/它有一个验证列表和依赖项,那么如果依赖单元格中有验证列表,则清除其内容。从原则上讲,这听起来很直截了当,但这让我很痛苦。。。!!!!有没有人已经准备好了这样一个宏,或者如果有任何建议,我将不胜感激?谢谢你,西亚兰 主要思想 使用动态范围 byval目标作为射程 如果单元格具有从属项 activecell.dependents.count>0 如果实际单元格有验证列表等。Excel 清除从属单元格和具有验证列表的单元格,excel,excel-2007,excel-2010,vba,Excel,Excel 2007,Excel 2010,Vba,我需要一些帮助。我正在建立一个包含多个验证列表的电子表格。每个验证列表都有多个链接到它们的验证列表(依赖项)。当我更改第一个验证列表时,我需要清除依赖于它的所有单元格(如果它们附加了验证列表) 我正在尝试创建一个足够动态的宏,这样我就不需要命名范围(我有太多的方法可以这样做)。基本上,如果activecell发生更改/它有一个验证列表和依赖项,那么如果依赖单元格中有验证列表,则清除其内容。从原则上讲,这听起来很直截了当,但这让我很痛苦。。。!!!!有没有人已经准备好了这样一个宏,或者如果有任何建
activecell.specialcells(xlcelltypeallvalidation)以下内容将仅在当前工作表中查看,但可以扩展为在所有工作表中循环。它还仅检查类型列表的验证
Sub ClearListValidations()
Dim ws As Worksheet 'not used currently
Dim rngCurrent As Range
Dim rngValids As Range
Dim strLookup As String
Dim rng As Range
Dim varIntersect As Variant
Application.ScreenUpdating = False
Set rngCurrent = ActiveCell
On Error Resume Next
Set rngValids = rngCurrent.SpecialCells(xlCellTypeAllValidation)
On Error GoTo 0 'reinstate error handling
If rngValids Is Nothing Then Exit Sub 'no list validations
For Each rng In rngValids
If rng.Validation.Type = 3 Then 'list validation
Set varIntersect = Application.Intersect(rngCurrent, _
Range(Mid(rng.Validation.Formula1, 2)))
If Not varIntersect Is Nothing Then
rng.ClearContents
rng.Validation.Delete
End If
End If
Next rng
Application.ScreenUpdating = True
End Sub
本质上,如果列表验证的源与当前单元格相交,则会从单元格中删除内容和验证设置
之所以使用
MID()
函数,是因为Formula1
包含一个等号,我们需要放弃它以形成一个范围。非常感谢您的帮助。注释对于理解方法非常方便。非常感谢-干杯。欢迎@user1624926。之所以使用MID()函数,是因为公式1包含一个等号,我们需要舍弃它以形成一个范围。