我试图过滤我的表格,一次只复制过滤范围内的一列。
我试图在我的范围内获得第2列,但它只返回第一个单元格。我也尝试过.entireColumn,但它返回的是整个列,而不是选定的整列。
Sub FillStocks(ByVal myDate As Date, ByVal name As String)
strDate = Format(myDate, "dd/MM/yyyy")
'Filter
With Sheets("BD_Sheet")
Set tableRange = .UsedRange
With tableRange
Call .AutoFilter(1, strDate)
Call .AutoFilter(2, name)
End With
On Error Resume Next
Set selectedRange = tableRange.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
With tableRange
Call .AutoFilter(2)
Call .AutoFilter(1)
End With
End With
'-----Do something with my range
selectedRange.Columns(2).Copy Sheets("MyReport").[A1] 'fail to copy selected values in column B
selectedRange.Columns(5).Copy Sheets("MyReport").[A2] 'fail to copy selected values in column E
End Sub
示例:
我的BD范围是" A1:O1000"。
按照日期和名称过滤后,我从selectedRange.Address获得了Range(" $ A $ 1:$ O $ 1,$ A $ 78:$ O $ 172")
我想从我选择的范围中复制B列,因此范围(" B1"," B78:BB172")。
答案 0 :(得分:1)
您的selectedRange是一个多区域选择 - 在这个例子中,columns属性仅从范围的第一个区域返回列。
相反,请使用您感兴趣的selectedRange和整个列的交集 - 例如
Application.Intersect(selectedRange.columns(2).Entirecolumn,selectedRange)