Excel 特殊单元格(12)。值在第一个隐藏行之后停止
我当前正在尝试将筛选列复制到数组中,以填充Powerpoint演示文稿中的组合框。 我使用的代码行是:Excel 特殊单元格(12)。值在第一个隐藏行之后停止,excel,vba,powerpoint,Excel,Vba,Powerpoint,我当前正在尝试将筛选列复制到数组中,以填充Powerpoint演示文稿中的组合框。 我使用的代码行是: ar = tbl.ListColumns(ColNumber).Range.SpecialCells(12).Value 其中“ar”是目标数组,“tbl”是源表,“ColNumber”是我试图复制的列数 我试图复制的筛选列有大约180条记录,但我注意到目标数组有6个值,因为它只选择了范围中的第一个“隐藏”行,并跳过了此后的每一个可见行 是否有一种方法可以获取每个可见行的值,而不仅仅是第一行
ar = tbl.ListColumns(ColNumber).Range.SpecialCells(12).Value
其中“ar”是目标数组,“tbl”是源表,“ColNumber”是我试图复制的列数
我试图复制的筛选列有大约180条记录,但我注意到目标数组有6个值,因为它只选择了范围中的第一个“隐藏”行,并跳过了此后的每一个可见行
是否有一种方法可以获取每个可见行的值,而不仅仅是第一行的值?由于范围不连续,您将面临这个问题。对于非连续范围,不能使用方法
Array=Range.Value
。有两种方法可以实现你想要的
方式1确定范围,循环单元格并填充数组。适合您的情况,因为您正在处理单栏
Option Explicit
Sub Sample()
Dim ws As Worksheet
Dim tbl As ListObject
Dim ar As Variant
Dim i As Long, n As Long, ColNumber As Long
Dim aCell As Range, rng As Range
'~~> Change this to the relevant sheet
Set ws = Sheet1
'~~> Change this to the relevant table
Set tbl = ws.ListObjects("Table1")
ws.AutoFilterMode = False
'~~> Change to relevant column number
ColNumber = 1
'~~> Autofilter as required
tbl.Range.AutoFilter Field:=ColNumber, Criteria1:="Blah1"
'~~> Set your range
Set rng = tbl.ListColumns(ColNumber).Range.SpecialCells(12)
'~~> Get the count of cells in that range
n = rng.Cells.Count
'~~> Resize the array to hold the data
ReDim ar(1 To n)
n = 1
'~~> Store the values from that range into the array
For Each aCell In rng.Cells
ar(n) = aCell.Value
n = n + 1
Next aCell
For i = LBound(ar) To UBound(ar)
Debug.Print ar(i)
Next i
End Sub
方式2确定范围,循环整个区域,然后循环该区域中的单元格,然后填充数组。与上面的代码非常相似
在行动中
设置断点并键入?tbl.ListColumns(ColNumber).Range.address在直接窗口中检查tbl
是否包含所有行。