Home » ExcelVBA Rangeオブジェクト » Endプロパティ » 新規データ入力セルを選択する−End・Offsetプロパティ

新規データ入力セルを選択する−End・Offsetプロパティ

対象:Excel97, Excel2000, Excel2002, Excel2003

複数のワークシートを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 » ExcelVBA Rangeオブジェクト » Endプロパティ » 新規データ入力セルを選択する−End・Offsetプロパティ

TrackBack:3

TrackBack URL
複数のシートを1枚にまとめる from インストラクターのネタ帳
対象:Excel 97,2000,2002,2003 VBA(Visual Basic for Applications)で、 アクティブセル領域を選択する方法、見出し行以外を選択する方法、新規データ入力セルを選択する方法をご紹介してきました。...
最大行数・最大列数の取得方法−?Rows.Coount/Columns.Count from インストラクターのネタ帳
対象:Excel2002, Excel2003, Excel2007, Excel2010 「VBA Excel 最大行数 取得方法」 といった検索がこ...
VBAで1つ下のセルを選択する-.Offset(1, 0).Select from インストラクターのネタ帳
1つ下のセルを選択するには、RangeオブジェクトのOffsetプロパティを使って、Rangeオブジェクトを取得するのが便利です。

Home » ExcelVBA Rangeオブジェクト » Endプロパティ » 新規データ入力セルを選択する−End・Offsetプロパティ

Copyright © インストラクターのネタ帳 All Rights Reserved.

.