オートフィルタ等で表示しているセルだけ取得し、
非表示セルの情報は無視するコードサンプルです。
オートフィルタを使った処理と組み合わせると、とても便利です。
例えば、欲しい情報だけフィルタリングし、その情報を取得するような処理です。
以下がコードサンプルです。
サンプルでは行番号を取得していますが、この要領で値を取得することもできます。
VBA
Sub Visible_Search()
'変数定義
Dim p As Long , n As Long 'カウンタ変数
Dim r As Range, rr As Range, rs As Range 'Visibleセルを取得する変数
p = 0
n = 2
'Range("A1", Range("A" & Rows.Count).End(xlUp)):A1~データのある最下行
'SpecialCells(xlCellTypeVisible):表示されているセルのみを対象とする
Set r = Range("A1", Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
'r:A1~データの存在する最大行セルまでの範囲(表示されているセルのみ)
'rr:A1~データの存在する最大行セルまで、A1から1つずつ格納される
For Each rr In r
'rsへ選択セルの値を格納
For Each rs In rr.Areas
'選択セルの行数を取得
p = (rs.Row)
'Visible行の行番号を出力
Sheets(X).Cells(n, 1).Value = p
n = n + 1
End If
Next
Next
End Sub