Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 循环数据验证;set range=不基于单元格源的数据验证列表_Vba_Excel_Validation - Fatal编程技术网

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

Vba 循环数据验证;set range=不基于单元格源的数据验证列表,vba,excel,validation,Vba,Excel,Validation,我确切地知道我的问题是什么,但找不到解决办法 我有两个工作表,运行几乎相同的代码,但第二个工作表是第一个工作表标题的子工作表 这是我的密码: 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)

我确切地知道我的问题是什么,但找不到解决办法

我有两个工作表,运行几乎相同的代码,但第二个工作表是第一个工作表标题的子工作表

这是我的密码:

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 list是由ws2头驱动的逗号分隔字符串

那么

 Set inputRange = Evaluate(ws2.Range("D1").Validation.Formula1)
因为公式是:=‘团队代码’$N$2:$N$6

但是

 Set inrng2 = Evaluate(ws3.Range("D1").Validation.Formula1)
不起作用,因为“公式”是:

第1组、第2组、第3组等

这个印刷元素是拼图的最后一部分,我花了很长时间制作这张纸,我对这张纸的其余部分的表现非常满意。如何让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

谢谢@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

使用
Split
将列表拆分为一个数组并循环。使用
Split
将列表拆分为一个数组并循环。