选择所选范围VBA中的列

时间:2014-08-07 14:31:04

标签: excel-vba vba excel

我试图过滤我的表格,一次只复制过滤范围内的一列。

我试图在我的范围内获得第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")。

1 个答案:

答案 0 :(得分:1)

您的selectedRange是一个多区域选择 - 在这个例子中,columns属性仅从范围的第一个区域返回列。

相反,请使用您感兴趣的selectedRange和整个列的交集 - 例如

Application.Intersect(selectedRange.columns(2).Entirecolumn,selectedRange)