(連続したデータの下端のセル)を調べたい場合がけっこうあると思います。
個人的には表の最後のセルを調べる(移動する)VBAマクロは良く使います。
どういう時に使うかと言うと、たとえば、ユーザーフォームでテキストの
入力フォームを表示させ、そこにデータを入力させて、
その入力されたデータを表の最後に追加したりとか。
また、最新のデータが表の一番下にある場合などに瞬時に
最後のデータを取り出したり、データの最後にカーソルを移動させたりできます。
このように複雑な処理をやりたい場合に、連続したデータの最後を調べる処理は
結構使います。それでは、表の指定した列(連続したデータ)の最終行を調べる
VBAの記述です。(連続したデータの下端のセルを調べるVBAの記述です。)
[記述例] 表の指定した列の最終行を調べるVBA記述
Sub test() '変数の宣言(とりあえずVariant型) Dim r As Variant '表の指定した列(連続したデータ)の最終行を代入 r = Range("A1").End(xlDown).Row 'メッセージボックスで結果を表示 MsgBox "指定した列のいちばん下端のセルは、" & r & " 行目です。" End Sub[動作とプログラムの説明]
最初に、結果を代入して表示する時に使う変数rの宣言をしています。
私の方では表の大きさは分からないのでVariant型で宣言しています。
表の大きさが分かっているならば、型を適切なものに変えて構いません。
変数の適切な宣言は、メモリの節約になりますので。
次に表の指定した列の最終行を変数のrに代入します。
ここで注意して欲しいのは、連続したデータの下端の行数が代入される
ということです。連続したデータの途中で空白があると、
空白行の1つ前、つまりデータが途切れたセルが最後の行と見なします。
Range("A1")のところの「A1」は、指定する列(起点となるセル)です。
ここを実際に自分が調べたい列(起点となるセル)のセルに変えて下さい。
End(xlDown).Rowのところは、連続したデータ(列)の最後という意味です。
(「Row」は列の指定です。)
今回のVBA記述は、表の上から、連続したデータの下端まで移動する
(調べる)ものですが、応用で、表の下から調べることもできます。
もし連続したデータの途中にどうしても空白行(空白セル)ができて
しまう場合は、表のいちばん下から上方向に移動(調べる)ことで、
表の最後を確実に調べることができます。Excel2003の場合だと、
最終行列数は65536行、Excel2007やExcel2010の場合だと、最終行列数は、
1048576行になります。なので、以下のような記述をします。
[記述例] 表の指定した列の最終行を下から調べるVBA記述
Sub test() '変数の宣言(とりあえずVariant型) Dim r As Variant '表の指定した列(連続したデータ)の最終行を下から調べる r = Range("A65536").End(xlUp).Row 'メッセージボックスで結果を表示 MsgBox "指定した列のいちばん下端のセルは、" & r & " 行目です。" End Subこの場合、先の記述例では、
End(xlDown).Rowだったのが、
End(xlUp).Rowになっていますので、注意して下さい。
「xlDown」が下に向かって移動(調べる)、
「xlUp」が上に向かって移動(調べる)ことを意味しています。