循环数据validation; 设置范围=不基于单元格的数据validation列表
我确切地知道我的问题是什么,但找不到解决scheme。
我有两个工作表,它们运行的代码几乎相同,但第二个工作表是第一个表头的一个子工作表。
这是我的代码:
Dim inputRange, inrng2 As Range Dim c, d As Range Set inputRange = Evaluate(ws2.Range("D1").Validation.Formula1) For Each c In inputRange temp = c.Value ws2.Cells(1, 4).Value = temp ws2.Activate ws2.PrintOut ws3.Activate Set inrng2 = Evaluate(ws3.Range("D1").Validation.Formula1) For Each d In inrng2 temp = d.Value ws3.Cells(1, 4).Value = temp ws3.Activate ws3.PrintOut Next d
我的问题是,inrng2给我一个types不匹配的错误。
这是因为我的ws3表单的数据validation是由代码先前在表单的不同部分驱动的:
ThisWorkbook.ws3.Activate ActiveSheet.Range("D1:E2").Select With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=TClist .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .ShowInput = True .ShowError = True End With
TC列表是由ws2头文件驱动的逗号分隔的string
所以
Set inputRange = Evaluate(ws2.Range("D1").Validation.Formula1)
因为公式是:='Team Codes'!$ N $ 2:$ N $ 6
但是
Set inrng2 = Evaluate(ws3.Range("D1").Validation.Formula1)
不起作用,因为“公式”是:
team1,team2,team3等
这个打印元素是拼图的最后一个工作,我很高兴这个表格的其余部分是如何执行的。 我怎样才能让vba在列出的每个数据validation项目中循环?
谢谢!
感谢@ rory,我只是需要一个正确的方向来打破我的隧道愿景:
teamlist = ws3.Range("D1").Validation.Formula1 tlsplit() = Split(teamlist, ",") For i = LBound(tlsplit) + 1 To UBound(tlsplit) ' +1 so you dont start at 0 ws3.Cells(1, 4).Value = tlsplit(i) ws3.Activate ws3.PrintOut Next i