オートフィルタ後のセルの選択&色付け
Offset
offsetとは指定されたセル範囲(Rangeオブジェクト)をオフセット(移動)する。
オフセット(移動)したセル範囲を表すRangeオブジェクトを返す。
Range("A1").Offset(3, 3).Select
A1セルを、行(下)方向に3、列(右)方向に3移動した、D4セルになります。
Range("B3").Offset(-2,-1).Select
B3セルを、行(上)方向に2、列(左)方向に1移動した、A1セルになります。
Range("A1:A3").Offset(, 3).Select
A1:A3セル範囲を、列方向に3移動した、D1:D3セル範囲になります。
Range("A1:C1").Offset(3).Select
A1:C1セル範囲を、行方向に3移動した、A4:C4セルになります。
CurrentRegion
CurrentRegionとは指定したセルを含むアクティブセル領域のこと。
※アクティブセル領域とは、空白行、空白列で囲まれた領域のこと。
Rows.CountとColumns.Count
選択されている行数、列数のこと。
現在の選択範囲の行数を取得するにはSelection.Rows.Count【ロウズカウント】、現在の選択範囲の列数を取得するにはSelection.Columns.Count【カラムズカウント】で取得し、その値に対して範囲を拡大、縮小します。
Rows.count - 1は最下行の1行を除く。-3なら3行除く。
Columns.count -1は最終列から1列を除く。-3なら3列を除く。
※逆に拡張したい(1列増やす、1行増やす)ときは-を+に変える
例)Columns.count + 3
Resize
Resizeとは指定されたセルを起点にセル範囲のサイズを変更する。
Range("A1").Resize(2, 2).Select
A1セルを起点に、2行2列の範囲になりますので、
A1~B2セルが選択されます。
組み合わせ
「 Range("A1").resize(Range("A1"). _
CurrentRegion.Rows.Count - 2).Offset(2, 5).Select」を解説
まず、下記の二つは同じ意味を持っています。
実際フィルタをしていない状態だと下記の範囲が選択されている。
しかしフィルタにより表示されているセルだけを選択や色付けが可能。
ですので、「 CurrentRegion.Rows.Count - 2)」の2は3でも5でもいくつでもOK。
因み以下は「 CurrentRegion.Rows.Count - 2)」で最終行含め2行除き、.Offset(2, 5)で下に2行、右に5つ移動してます。
フィルタで絞った状態で以下のマクロを実行してみます
Range("A1").resize(Range("A1"). _
CurrentRegion.Rows.Count - 2).Offset(2, 5).Interior.Color = vbYellow
色付けされました。
フィルターをリセットしてみます。
フィルタをリセットしてもフィルタ中に表示されていたセルのみに色をつけることができました。