Arrays 特殊单元格(xlCellTypeVisible)未将所有值返回到数组(Excel 2013)

Arrays 特殊单元格(xlCellTypeVisible)未将所有值返回到数组(Excel 2013),arrays,excel,autofilter,Arrays,Excel,Autofilter,我有一个17万行的范围。我正在筛选A列中的单个值,并在B列中返回相应的值 我希望将这些值转储到一个数组中,这样我就可以快速地将它们放入一个字典中(键是我过滤列a时使用的值) 问题在于特殊单元格(xlCellTypeVisible)的行为不一致 如果我在较小的范围内进行相同的测试,则值会很好地转储到数组中。但是对于像我一样大的范围,它只返回范围中的第一个值。此外,我可以使用同一行复制到另一张图纸。我只是无法让它填充数组 foo = ws1.Range(tbl1Name & "[ID]").

我有一个17万行的范围。我正在筛选A列中的单个值,并在B列中返回相应的值

我希望将这些值转储到一个数组中,这样我就可以快速地将它们放入一个字典中(键是我过滤列a时使用的值)

问题在于
特殊单元格(xlCellTypeVisible)
的行为不一致

如果我在较小的范围内进行相同的测试,则值会很好地转储到数组中。但是对于像我一样大的范围,它只返回范围中的第一个值。此外,我可以使用同一行复制到另一张图纸。我只是无法让它填充数组

foo = ws1.Range(tbl1Name & "[ID]").SpecialCells(xlCellTypeVisible)
适用于小范围,但只返回与我一样大的范围内的第一个结果(少于50个结果)。foo成为包含所有变量的数组

ws1.Range(tbl1Name & "[ID]").SpecialCells(xlCellTypeVisible).Copy ws2.Range("A1")
在大范围内工作并成功复制所有相关数据


因此,我的问题是:在自动筛选大表范围时,如何填充数组而不需要额外的复制到空白工作表的步骤?(Excel 2013)

编辑:需要对“Microsoft Forms 2.0对象库”的引用(应位于可用引用列表的顶部附近)。或者向项目中添加一个userform,这将自动添加引用(然后可以删除表单…)

这适用于单个列:

Sub Tester()

    Dim rng, txt As String, cb As New DataObject, arr

    Set rng = ActiveSheet.Range("A2:A28").SpecialCells(xlCellTypeVisible)

    rng.Copy
    DoEvents
    cb.GetFromClipboard
    txt = cb.GetText
    arr = Split(txt, vbCrLf)
    Debug.Print LBound(arr), UBound(arr)

End Sub

如果有多个列,则需要在
arr
的每个元素上循环(在选项卡上拆分其值),并将值传输到二维数组

你可以尝试循环。我看到在以前的版本中,循环被用来绕过行数限制,但根据我所读到的所有内容,我不应该为此需要循环。在
code
Dim cb作为新数据对象时获得中断,我在我的引用列表中没有看到Microsoft Forms 2.0对象库…解决方案是添加一个UserForm,然后自动添加引用。