我必须在F&列中的以下行填充依赖列表。 G使用VBA基于D列中的值,这意味着如果我在第5行中说“A”,那么我需要在相应的F&中分配与“A”相关的依赖列表。 G栏。
以下是“A”组的数据
以下是“B”组的数据
由于列“A”具有重复数据,我正在过滤唯一数据并将它们转换为列“E”作为标题,并使用以下代码将命名范围“标题”分配给它们。
Set Rng = Range(Cells(7, 5), Cells(7, 7))
Rng.Select
Set ws = Sheets("tempdump")
ActiveWorkbook.Names.Add Name:="header", RefersToR1C1:=Rng
然后我模拟“SHIFT + Ctrl + F3”命令,使用以下代码将每个列表的第一个值指定为该组的标题。
Range(Cells(7, 5), Cells(7, 10)).Select
Selection.CreateNames top:=True, Left:=False, bottom:=False, Right:= _
False
现在我要前往我需要依赖列表的第一张图片(第一张图片)。
在单元格F5中,我创建一个从属列表,并使用带有以下代码的in direct函数。
Sheets("Not Filled").Activate
Cells(7, 8).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=header"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Cells(7, 9).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=indirect(F5)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
我可以使用VBA基于命名范围创建依赖列表。一切都好。 当我必须为组“B”做同样的事情时,问题就开始了 这个问题是因为组“A”和“A”所需的命名范围 “B”是90%相同。在执行“Shift + CTRL + F3”操作时,分配给组B和组A的列表的名称是相同的,因为两个标头具有相同的值,这导致从属列表填充组A列表中的值而不是B组。
为了更清楚,我希望第一个列表具有相同的标题,但依赖列表应该是不同的,这是不会发生的。
理想情况下,第二个列表的值应为
在这里待了两个星期,任何数量的帮助对我来说都很重要,谢谢......
答案 0 :(得分:1)
要明确:
输入AssignedGroup列的值必须使用cause和category列中的Data Validation下拉列表更改提供给用户的值列表。
我想我明白你在做什么,但我会以不同的方式做到这一点。
考虑:
您需要维护两个列表
List1具有允许用户在“原因”列中输入的值列表 List2具有允许用户在“类别”列中输入的值列表
上面列表中的值取决于当前行和为指定组输入的值。
因此,当用户单击新行或更改AssignedGroup列中的值时,您需要更改列表中的值。 (您可以使用工作表worksheet_change事件和workksheet_selectionChange事件来管理此事件)
因此,您确实不需要在列上重新创建验证规则,而是需要重新创建基础值表。
由于原因重复,我会编写维护单独表的代码(您可能会使用数据透视表自动执行此操作)。其中只有两列:AssignedGroup和Cause。
我想你可以从这里拿走它。
哈维