BizFAQ-ビズファック

仕事・ビジネスにおけるちょっと困ったこと、わからないことをズバリ解決お悩み解決サイトです。

  • TOP
  • 副業解禁時代の年収1000万円戦略
  • Excel
  • Word
  • PowerPoint
  • サイトマップ

VBAで一行全て指定する、Rowsでデータの最終行を調べる

2015年4月6日 by Gen

VBA_Rows_3

VBAのCellsはデフォルトで縦横全てのセルを取得しましたが、Rowsは横一行を取得します。Rows単体では使いにくそうですが、データの最終行処理で頻出です。これはもうVBAのパターンなので、どこかに書いて保存しておいた方がいいかも。



目次

  • VBAのRowsでデータの最終行を取得する
    • 1.Rowsオブジェクトとは
    • 2.最終行を得る(下に検索)
      • Sub Macro1() ‘ ‘ Macro1 Macro ‘ ‘ Selection.End(xlDown).Select End Sub
    • 3.データの最終行(上に検索)
      • Sub Macro1() ‘ ‘ Macro1 Macro ‘ ‘ Cells(Cells.Rows.Count, 1).End(xlUp).Select End Sub
      • Sub Macro1() ‘ ‘ Macro1 Macro ‘ ‘ MsgBox Cells(Cells.Rows.Count, 1).End(xlUp).Row End Sub

VBAのRowsでデータの最終行を取得する

VBAで最終行を得る時、基準のセルから、「下に」最終行を探すか「上に」最終行を探すかで結果が異なる場合があります。原因は空行にあります。空行がある場合は「下に」探したのでは不十分な最終行になってしまいます。

そこで「上に」探すことが必要です、Rowsオブジェクトを使用します。

1.Rowsオブジェクトとは

Rows(Index)で、行一列を取得します。今回の処理では、ワークシート全体のRowオブジェクトの数を数えるために使用します。上位オブジェクトにはWorksheetかRangeオブジェクトを指定できます。省略した場合はActiveSheetが補完されます。

2.最終行を得る(下に検索)

「Ctrl+↓」でデータの最終行に移動できるのは知っていますでしょうか。その操作のマクロ記録が以下になります。
サンプルデータはこちらです。

VBA_Rows_1

「Ctrl+↓」を押した画像はこちらです。

VBA_Rows_2

コード記録されたVBAがこちらです。

VBA_Rows_3

Sub Macro1()
‘
‘ Macro1 Macro
‘

‘
Selection.End(xlDown).Select
End Sub

3.データの最終行(上に検索)

VBAのコードを見てすぐ分かる人はいませんが、実はEndキーワードが検索をするプロパティです。引数が検索をする方向になります。xlUp, xlDown, xlToRight, xlToLeftが指定できます。

Endの上位オブジェクトが検索の基準になるセルです。つまりA1から検索するのではなくA列のシートの最終行から「上に」検索することで最終行を得ます。

最終行はCells.Rows.Countで取得します。

Sub Macro1()
‘
‘ Macro1 Macro
‘

‘
Cells(Cells.Rows.Count, 1).End(xlUp).Select
End Sub

修正するとこうなります。実行した画像は以下になります。

VBA_Rows_4

EndプロパティはVBAのRangeオブジェクトを返しますので、Range.RowでRangeオブジェクトの行数を得ることが出来ます。

Sub Macro1()
‘
‘ Macro1 Macro
‘

‘
MsgBox Cells(Cells.Rows.Count, 1).End(xlUp).Row
End Sub

実行した画像は以下になります。

VBA_Rows_5


今回はRowsオブジェクトの解説をしました。

この最終行を得る処理は結構使うので、自分でFunction化して保存しておくと便利です。
頻出の処理をまとめてライブラリ化するのも大切です。

Filed Under: Rows Tagged With: Excel, Rows, vba, マクロ




© Copyright 2015 BizFAQ · All Rights Reserved · Powered by WordPress · Admin