シート使用範囲の取得 (UsedRangeプロパティ)
UsedRangeプロパティを参照すると、使われているセル範囲を取得することができます。
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Sample4_16_1() Dim lngUsedRow As Long Dim lngUsedCol As Long lngUsedRow = Worksheets("Sheet1").UsedRange.Rows.Count ' 使用行 lngUsedCol = Worksheets("Sheet1").UsedRange.Columns.Count ' 使用列 MsgBox "使用行:" & CStr(lngUsedRow) & vbCrLf & _ "使用列:" & CStr(lngUsedCol) End Sub |
実行結果
シート使用範囲の取得 (SpecialCellsメソッド)
“xlCellTypeLastCell”を指定することで、使われているセル範囲内の最後のセルを取得することができます。
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Sample4_16_2() Dim lngUsedRow As Long Dim lngUsedCol As Long lngUsedRow = Worksheets("Sheet1").Cells.SpecialCells(xlCellTypeLastCell).Row lngUsedCol = Worksheets("Sheet1").Cells.SpecialCells(xlCellTypeLastCell).Column MsgBox "使用行:" & CStr(lngUsedRow) & vbCrLf & _ "使用列:" & CStr(lngUsedCol) End Sub |
実行後
シートの最終セルを取得
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Sample4_16_3() Dim lngMaxRow As Long Dim lngMaxCol As Long lngMaxRow = Worksheets("Sheet1").Rows.Count lngMaxCol = Worksheets("Sheet1").Columns.Count MsgBox "最終行:" & CStr(lngMaxRow) & vbCrLf & _ "最終列:" & CStr(lngMaxCol) End Sub |
最終セルから使用範囲の取得
シート上で[Ctrl + ↑]、[Ctrl + ←]を実行した時の動きを利用します。
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Sample4_16_4() Dim lngUsedRow As Long Dim lngUsedCol As Long lngUsedRow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row lngUsedCol = Worksheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column MsgBox "使用行:" & CStr(lngUsedRow) & vbCrLf & _ "使用列:" & CStr(lngUsedCol) End Sub |
実行後
先頭セルから使用範囲の取得
シート上で[Ctrl + ↓]、[Ctrl + →]を実行した時の動きを利用します。
実行プログラム
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub Sample4_16_5() Dim lngUsedRow As Long Dim lngUsedCol As Long lngUsedRow = Worksheets("Sheet1").Cells(2, 2).End(xlDown).Row lngUsedCol = Worksheets("Sheet1").Cells(2, 2).End(xlToRight).Column MsgBox "使用行:" & CStr(lngUsedRow) & vbCrLf & _ "使用列:" & CStr(lngUsedCol) End Sub |
実行結果
注意
連続していないデータの場合は最後のセルを取得することはできません。