Excel VBA UsedRange で使用範囲を取得して Rows.Count で行数 最終行は Cells(objRANGE.Rows.Count, 1).Row なんて感じで遠回りで取得してみた
Dim objRANGE As Range
Set objRANGE = ActiveSheet.UsedRange 'セルの使用範囲を取得
VBA Excel 表 範囲 で検索すると
下記のわかりやすいページがヒットします
セル範囲の取得 セル範囲の取得
http://officetanaka.net/excel/vba/cell/cell10.htm
より
>
>ワークシートで使用されているセル範囲
>ワークシート.UsedRange
↑が取れるので、
1.アクティブシートの使用範囲を取得してみた
https://www.youtube.com/watch?v=w1xG7BSdxDQ
単純に取得して、アドレスを表示しただけでした
Sub UsedRange_test001() Dim objRANGE As Range Set objRANGE = ActiveSheet.UsedRange 'セルの使用範囲を取得 '単純に↑でSET取得したRANGEに対して、Aaddressを表示してみた Debug.Print "ActiveSheet.UsedRange 使用範囲は:" & objRANGE.Address End Sub
2.取得した範囲の行数が知りたかったので、Rows.Count で行数を取得してみた
https://youtu.be/w1xG7BSdxDQ?t=166
Sub UsedRange_test002() Dim objRANGE As Range Set objRANGE = ActiveSheet.UsedRange 'セルの使用範囲を取得 '単純に↑でSET取得したRANGEに対して、Aaddressを表示してみた Debug.Print "ActiveSheet.UsedRange 使用範囲は:" & objRANGE.Address '単純に行数が知りたかったので、Rows.Count Debug.Print "行数は:" & objRANGE.Rows.Count End Sub
3.最終行が知りたかったので Cells(行数,1).Rowで取得してみた
https://youtu.be/w1xG7BSdxDQ?t=218
まぁ.Addressで$C$3:$F$6←がわかるので、ここの6からでもいいんだけど、
Sub UsedRange_test003() Dim objRANGE As Range '範囲を入れるRange型 Dim y As Integer '行 Set objRANGE = ActiveSheet.UsedRange 'セルの使用範囲を取得 '単純に↑でSET取得したRANGEに対して、Aaddressを表示してみた Debug.Print "ActiveSheet.UsedRange 使用範囲は:" & objRANGE.Address '単純に行数が知りたかったので、Rows.Count y = objRANGE.Rows.Count Debug.Print "行数は:" & y 'Cells(行数,1).Rowで実際の最終行を取得してみた Debug.Print "実際の最終行は:" & objRANGE.Cells(y, 1).Row End Sub
4.終わりの挨拶
https://youtu.be/w1xG7BSdxDQ?t=291
ActiveSheet.UsedRange
で$C$3:$F$6がわかります
三流な私は、セルの使用範囲はA1から始まっていると思い込んでいたので、
最終行は
ActiveSheet.UsedRange.Rows.Count
でいいのかなぁ、と思ってたら、
範囲が、$C$3:$F$6だと、3,4,5,6で4行の4が返ります
ここから、6(最終行)を知りたかったので
y = objRANGE.Rows.Count '範囲の行数を取得
objRANGE.Cells(y, 1).Row '実際の最終行
なんて、回り道をして取得してみました。
まぁ、こんな方法もあるってことで、
.UsedRange でデータ使用範囲のセルがまとめて取れるので、
何かの時に使ってみてください。