前提・実現したいこと
EXCEL VBAでフィルタで非表示になったセル以外の可視セルを、
オブジェクト変数に格納したいです。
該当のソースコード
'開始セルの定義
StartRow = "A4"
'フィルタがかかっている場合、解除
If ActiveSheet.AutoFilterMode = True Then
Range("A1").AutoFilter
End If
'最下行を定義
EndRow = Cells(Rows.Count, 1).End(xlUp).Row
EndRow = "A" & endrow
'フィルタを設定(空白以外)
Range("A2:" & endrow).AutoFilter Field:=1, Criteria1:="<>"
'オブジェクト変数に可視セルを格納
Set ObjectRange = ThisWorkbook.ActiveSheet.Range(Range(StartRow), Range(endrow)).SpecialCells(xlCellTypeVisible)
For i = 1 To ObjectRange.Rows.Count
Main_Process
next i
試したこと
Excel側は、A4,A5,A7,A8に値が入っており、A6セルが空白になっています。
上記の環境で、ソースコードに記載した内容を実行すると、
ObjectRange.Rows.Countの値が2(A4,A5セルの値)になってしまいます。
SpecialCells(xlCellTypeVisible)を指定しているため、
可視セルの値がすべて入ってくる想定でしたが、
なぜ、非表示セルまでの値しか取得できないのでしょうか。
暫定対応
非表示セルを除いた、可視セルのみの値を抽出することができない場合、
フィルタした行の内容をwork用の行にコピペで貼り付けて、
work用の行を参照させようと考えていますが、
実際のデータは、件数が多く関数もExcel内で使用されているため、
コピペの動作は遅延に繋がると想定しています。
上記以外に良いアイデアがあったら、ご教示ください。
補足情報(FW/ツールのバージョンなど)
Application.Version 16.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。