列 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 の予約語を使用しないことをお勧めします。範囲は予約語です。