在另一个question中,我想出了如何过滤另一个表中的每一行的表。现在,我需要再次使用过滤后的表中的一组条件过滤另一个表。
当我使用下面标记的代码时,会收到错误消息;类型不匹配。
最终,我需要打印此循环的每个结果。
编辑:现在已解决此问题。下面的代码非常出色!
Sub LoopDoorAfdelingV4()
Dim myTable As ListObject
Dim myTable2 As ListObject
Dim c As Long
Dim myArray As Variant
Dim myGroupIDFilter As Variant
Dim myGroupNameFilter As Variant
Set myTable = ActiveSheet.ListObjects("TabelGroupID")
Set myGroupIDFilter = myTable.ListColumns(1).Range
Set myGroupNameFilter = myTable.ListColumns(2).Range
Set myTable2 = ActiveSheet.ListObjects("TabelAfdelingenIntern")
For c = 2 To myTable.ListRows.Count
ActiveSheet.Range(myTable2).AutoFilter Field:=1, Criteria1:=myGroupNameFilter(c)
Set myfilteredgroup = myTable2.ListColumns(2).DataBodyRange.SpecialCells(xlCellTypeVisible)
With Application
myArray = .Transpose(myfilteredgroup)
End With
Worksheets("Vorige werkdag").Range("$E$2:$P$10000").AutoFilter Field:=5, Criteria1:=myArray, _
Operator:=xlFilterValues
Worksheets("Vorige werkdag").PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Next c
End Sub
答案 0 :(得分:0)
我推测这是由于您设置数组的方式会生成2D
数组,而Criteria1:=myArray
期望有1D
数组。
如果数据在列中,则可以使用
With Application
myArray = .Transpose(myfilteredgroup.SpecialCells(xlCellTypeVisible))
End With
并且如果是连续使用
With Application
myArray = .Transpose(.Transpose(myfilteredgroup.SpecialCells(xlCellTypeVisible)))
End With