循环数据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