2011-03-23 65 views
1

我希望能夠使用VBA中的AutoFilter方法的結果。我可以應用AutoFilter方法(使用命名範圍),但無法弄清楚如何在VBA中創建僅包含結果的Range變量。然後我想循環這個結果範圍。我不知道如何做到這一點,而不是簡單地檢查每行的Visible屬性,並對這些行進行操作。如何訪問VBA範圍內的過濾行?

Public Sub CopyFilteredRows() 
    Dim sourceRg As Range, filteredRg As Range, objRow As Range 

    Set sourceRg = ThisWorkbook.Names("FY10CountsRg").RefersToRange 
    sourceRg.AutoFilter Field:=1, Criteria1:="=D-144", Operator:=xlOr, _ 
    Criteria2:="=D-200" 

    For Each objRow In filteredRg.Rows 
     ''do something 
    Next 

End Sub 

回答

3

試試這個 - 它應該只是打&打印其價值可見單元格 - 你應該能夠調整它做的工作:

Dim rgAreas As Range: Set rgAreas = FilteredRg.SpecialCells(xlCellTypeVisible) 
Dim rgArea As Range 
Dim rgCell As Range 

For Each rgArea In rgAreas.Areas 
    For Each rgCell In rgArea.Cells 
     Debug.Print rgCell.Address & ": " & rgCell.Value 
    Next rgCell 
Next rgArea