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
将列表拆分为一个数组并循环。