清除依赖项并具有validation列表的单元格

我需要一些帮助。 我正在设置一个包含多个validation列表的电子表格。 每个validation列表都有多个链接到它们的validation列表(依赖者)。 当我更改第一个validation列表时,我需要清除所有依赖它的单元格(如果他们有附加的validation列表)。

我试图创build一个dynamic的macros,所以我不需要命名范围(我有太多的任何方式)。 基本上,如果激活的单元格更改/它有一个validation列表,并有依赖关系 – 然后清除相关单元格的内容,如果他们有validation列表。 原则上它听起来很直接,但它是杀了我… !!!! 有没有人有这样的macros已经到位,或者我会感激任何意见? 谢谢Ciaran。

主要想法。

使用一个dynamic范围byval目标作为范围

如果单元格有依赖项activecell.dependents.count> 0

如果实际的单元格有validation列表等activecell.specialcells(xlcelltypeallvalidation)

以下内容只会在当前工作表中查看,但可以扩展为在所有工作表中循环。 它也只检查typesList的validation。

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 

基本上,如果List-Validation的源与当前单元格相交,它将从单元格中删除内容和validation设置。

使用MID()函数是因为Formula1包含一个等号,我们需要放弃这个来构成一个Range。