見出しを除くデータを消す方法です。
使うデータ:フォルダ内のファイル名へのリンクの一覧作成
ここで名前の定義方法を説明する理由は、この後もこのデータを利用した続きがあるためです。
データ範囲に名前の定義を設定する
次のデータ領域に名前の定義を設定します。
- セルA1:B10に入力されている
- セルA1:B10に隣接するセルは空白
「品名一覧」と名前をつけるコードです。
Sub sample_name() Range("A1").CurrentRegion.Name = "品名一覧" End Sub
「Range("A1").CurrentRegion」はセルA1を起点とし、空白行と空白列に囲まれた範囲を取得します。これにRangeオブジェクトのNameプロパティで名前の定義をします。
実行後
名前ボックスをクリックすると「品名一覧」があります。
「品名一覧」を選択すると設定した範囲が選択されます。
見出しを除くデータの削除
見出しを除く範囲「セルA2:B11」を選択
データを消した結果
最終行取得の場合
データ領域の選択コードです。
Sub sample_hani1() Dim LRow As Long LRow = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(2, 1), Cells(LRow, 2)).Select End Sub
「Cells(Rows.Count, 1).End(xlUp).Row」でセルA1の最終行から上方向の最後の行を取得すれば範囲を指定できます。
データを消すコードです。
Sub sample_hanidel1() Dim LRow As Long LRow = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(2, 1), Cells(LRow, 2)).ClearContents End Sub
「Range(Cells(2, 1), Cells(LRow, 2)).Select」の最後の「Select」を「ClearContents」に変えるだけです。「ClearContents」は値のみを消します。「Del」キーでデータを消す場合と同じ動作です。書式も消す場合は「Clear」を使います。
Offsetの場合
「Range("A1").CurrentRegion」でデータ領域を取得し、1行下にずらした範囲を取得しデータを消す方法です。
Sub sample_hanidel2() Range("A1").CurrentRegion.Offset(1, 0).ClearContents End Sub
Range("品名一覧")
「Range("A1").CurrentRegion」を名前の定義で「品名一覧」と設定しているため、「Range("品名一覧").Offset(1, 0).ClearContents」で動作します。
Sub sample_hanidel2_2() Range("品名一覧").Offset(1, 0).ClearContents End Sub
Offset(1, 0)
「Offset(1, 0)」の0は省略できるので「Offset(1)」でも動作します。
「Range("A1").CurrentRegion.Offset(1, 0).select」での範囲は、消したい1行下まで選択されますが影響はないため上記のコードで問題ありません。
Intersectの場合
Intersectメソッドを使った方法です。
Sub sample_hanidel3() Intersect(Range("品名一覧"), Range("品名一覧").Offset(1)).ClearContents End Sub
Intersectでセル範囲が重なる領域を取得、データを消します。
「Range("品名一覧")」は「offset」と同じく、名前の定義で「品名一覧」と設定しているため、「Intersect(Range("品名一覧"), Range("品名一覧").Offset(1)).ClearContents」で動作します。
「Range("品名一覧")」の範囲
「Range("品名一覧").CurrentRegion.Offset(1)」の範囲
上記2つが重なった範囲が黄色のセル塗りつぶし