
いつもお世話になっております。
VBA初心者ですが、RowとRowsの違いについて今一つ分かりません。
添付ファイルのように、A2:A25まで数字を入れた表を作って、今ある知識で行数をカウントするコードをいくつか書いてみました。
test1:A2から始まる表を構成するトータル行数を返す。
test2:??
test3:A2から始まる表の最終行番号を返す。
test4:test1と同じ
test5:???
(1)test2、5は同じ内容のコードになると思いますが・・結果の『2』は何を意味しているのか分かりません。
(2)RowとRowsの違いは簡単に言うとどういう事でしょうか?
まとまりの無い文章で申し訳ありませんが、よろしくお願いいたします。
Sub test1()
Cells(2, 2).Value = Cells(2, 1).CurrentRegion.Rows.Count
End Sub
Sub test2()
Cells(2, 3).Value = Cells(2, 1).CurrentRegion.Row
End Sub
Sub test3()
Cells(2, 4).Value = Cells(2, 1).End(xlDown).Row
End Sub
Sub test4()
Cells(2, 5).Value = Range(Cells(2, 1), Cells(2, 1).End(xlDown)).Rows.Count
End Sub
Sub test5()
Cells(2, 6).Value = Range(Cells(2, 1), Cells(2, 1).End(xlDown)).Row
End Sub

No.2ベストアンサー
- 回答日時:
Range.Row プロパティをヘルプで調べると、「対象セル範囲の最初の領域の先頭行の番号を返します」と書いてあります。
「最初の領域」というのは、例えば union(range("b2:d4"),range("f3:h5")) のような複数の領域を合わせた領域のうち、合わせる前の最初の領域ということです。つまりこの領域の Row プロパティである union(range("b2:d4"),range("f3:h5")).Row は、「b2」の「2」を返すこととなります。上のプロパティが返すのは行番号という Long 型の数値であって、行というオブジェクトではありません。しかし一方では、行というオブジェクトを Row オブジェクトと呼ぶので、初級者の方には紛らわしいと感じられるかもしれません。VBA が上手になってくれば、当たり前のことなのですがね。
オブジェクトの集まりをコレクションと言います。コレクションも 1 つのオブジェクトです。
あるコレクションが全て同じ種類のオブジェクトだけでできているという場合は、原則としては、要素となっているオブジェクト名の複数形をそのコレクションの名前にします(ただし名前が単数・複数の関係になっていない親子のオブジェクトも存在します)。つまり Row オブジェクトだけでできているコレクションは、Rows オブジェクトあるいは Rows コレクションと呼びます。
他に、Workbook オブジェクトと Workbooks コレクション、Shape オブジェクトと Shapes コレクション等々も、同様な関係です。
Range.Rows プロパティは、その Range に含まれる全ての行の集まり、即ち、その Range での Rows オブジェクトを返すプロパティです。
Range.Row は 2 などの「値」を返しますが、Range.Rows は行という「オブジェクト(への参照)」を返すのですね。
Rows オブジェクトの要素である各 Row オブジェクトは、インデックス(番号)によって特定されます。つまり、ある Range に含まれる 1 番目、2 番目、3 番目、…の Row オブジェクトは、コレクションに番号を付けて、Range.Rows(1)、Range.Rows(2)、Range.Rows(3)、…というプロパティにより、返されます。複数形のオブジェクト名にインデックスを付けることで、単数のオブジェクトを表すことになります。
No.1
- 回答日時:
難しく考えすぎなのかな?
ROWは単純に行番号なので、
ROW(セル)
括弧内で指定したセルの行番号が返ります。
※ エクセルの左に並んでいる1,2,3・・・の数字
よくある感違いで
ROW(範囲)
この時は、範囲の一番小さい値の行番号が返ります
例 ROW(A23:C55)
23が返ります
ここまではよいかな?
ROWSは範囲が返ります
ROWS(セル)
範囲が指定されていないので、セル1個分で1が返ります
ROWS(範囲)
ここでよくある勘違いは複数列を指定しても、行数は変わらないってことかな
ROWS(B2:B5)とROWS(B2:D5)は同じ値の2~5で4が返ります
これの行は2,3,4,5の4行なので、戻りは4
ここまで理解できれば、Test1~5を見直してみましょう
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
オブジェクト変数の取得について
-
「オブジェクト変数または With...
-
ExcelVBAでのNZ関数について
-
テキストボックス中の文字列の...
-
Excel VBAでIEにアクセスするプ...
-
findメソッドの変数について
-
VBScriptからDLL参照設定したい
-
EXCEL VBA オートシェイプナン...
-
CreateObjectとGetObjectの違い
-
ActiveXコントロールを用いたマ...
-
エクセルマクロエラー「'Cells'...
-
VBAで Set wb = Sheets(1).Cop...
-
ある文字列が全て数字であるか...
-
VBAからPDFファイルにパスワー...
-
AccessVBAで「dim dbs as datab...
-
Acces2002のエラーメッセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
テキストボックス中の文字列の...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
上下の位置揃えについて
-
ExcelVBAでのNZ関数について
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
AccessVBAで「dim dbs as datab...
-
EXCEL VBA オートシェイプナン...
-
オブジェクト変数またはWITHブ...
-
[VBA]CDOメッセージ送信エラー
-
エクセルマクロエラー「'Cells'...
-
findメソッドの変数について
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
オブジェクト変数の取得について
-
CreateObjectとGetObjectの違い
おすすめ情報