[英]Cycle through Data Validation ; set range = Data validation list that is not based on a source of cells
我确切地知道我的问题是什么,但找不到解决方案。
我有两张表,它们运行几乎相同的代码,但第二张表是第一张表头的子页。
这是我的代码:
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给了我一个类型不匹配的错误。
这是因为我对ws3表的数据验证是由早期在表单的不同部分中的代码驱动的:
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标头驱动的逗号分隔字符串
所以
Set inputRange = Evaluate(ws2.Range("D1").Validation.Formula1)
是因为公式是:='团队代码'!$ N $ 2:$ N $ 6
但是
Set inrng2 = Evaluate(ws3.Range("D1").Validation.Formula1)
不起作用,因为'公式'是:
team1,team2,team3等
这个印刷元素是构建这张纸的长期努力的最后一个方面,我对这张纸的其余部分表现非常满意。 如何让vba循环遍历列出的每个数据验证项目?
谢谢!
谢谢@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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.