由於B列將是受與列A相同的過濾器,這裏是一個靈活的解決方案,允許您指定要使用的列:
Sub FilterColumn(ColumnNumber As Long)
Dim LastRow As Long
Dim rng As Range
Dim rngVisible As Range
Dim cell As Range
Dim Array1() As Variant
Dim i As Long
With ActiveSheet
Set rng = .Columns(ColumnNumber)
LastRow = .Cells(.Rows.Count, ColumnNumber).End(xlUp).Row
On Error Resume Next
Set rngVisible = .Range(.Cells(2, ColumnNumber), .Cells(LastRow, ColumnNumber)).SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not rngVisible Is Nothing Then
ReDim Preserve Array1(1 To rngVisible.Cells.Count)
i = 1
For Each cell In rngVisible
Array1(i) = cell.Value
i = i + 1
Next cell
End If
End With
End Sub
對此列進行調用B:
FilterColumn 2
作爲一個方面說明,我建議你不要使用Excel保留字作爲變量名。範圍是保留字。
完全是我在找的,謝謝!偏移...必須記住那一個。 – phan 2012-08-17 18:37:53