複数のワークシートを1枚のシートにまとめるために、CurrentRegionプロパティを使って、アクティブセル領域を選択する方法をご紹介しました。
「Selection.Copy」ステートメントで選択範囲のデータをコピーしたら、次に必要なのが、データの貼り付け先を見つける処理です。
新規データ入力セルを選択するサンプルコード
データの途切れるセルを選択する操作に、[Ctrl]キー+方向キーを押すという操作がありますが、VBA(Visual Basic for Applications)では、RangeオブジェクトのEndプロパティを使うと同様のことができます。Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Select
サンプルで利用している式について
現在のバージョンならば
Cells(65536, "A").End(xlUp).Offset(1, 0).Select
と記述しても同じことです。
「Cells(65536, "A")」は、A列のデータの入力されている一番最後のセル:A65536セルを意味していますが、将来のバージョンでワークシートの行数が65536行より増えることがあり得るので、Cellsの引数に「65536」という直値を指定せずに、「Rows.Count」で、ワークシートの行数を取得するようにしています。
「Cells(Rows.Count, "A")」
「Cells(65536, "A")」
という一番下のセルから、「End(xlUp)」プロパティを使ってデータの最終行をみつけるというのは、ExcelのリストをVBAで操作する際の定石と言っていい方法です。
「Cells(1, "A").End(xlDown)」
「Range("A1").End(xlDown)」
としてA1セルから下方向にデータを途切れる箇所を探すと、万一データが存在しない場合に、新規データを入力するセルではなく、A65536セルが指定されてしまうので、これを避けるための記述方法です。
逆に「確実に」データが存在していることが明らかな場合ならば、
Cells(1, "A").End(xlDown).Offset(1, 0).Select
Range("A1").End(xlDown).Offset(1, 0).Select
としても新規データ入力用のセルを選択できます。
Home » Excel VBA Rangeオブジェクト » Endプロパティ » 新規データ入力セルを選択する−End・Offsetプロパティ