繁体   English   中英

循环数据验证; set range =不基于单元格源的数据验证列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM