シートの使用範囲を計算する関数です。値が入力されている最終行と最終列の交差するセルを表示します。なお、値のみで罫線などは含みません。
セルの使用範囲を知ることで、データの件数を調べたり、他のVBAと組み合わせて印刷範囲を指定したりして利用できます。
VBEの標準モジュールに下のコードを登録して「Excelマクロ有効フォーム」で保存してください。
関数の登録方法は⇒♯000 ユーザー定義関数を登録する方法
登録されたら、シート上からユーザー関数「 UsedRange 」が使用できます。
使い方は
ワークシート上で = UsedRange([シート番号又はシート名]省略した場合は関数のあるシート) の関数として使用することで、シートの最終セルを表示します。
指定したシートにセルの値が全くない場合はエラー値「NULL! 」となります。
【例】
UsedRange([シート番号又はシート名]省略した場合は関数のあるシート)
UsedRange()→$K$9
UsedRange(“Sheet1”)→$K$9
UsedRange(2)→$D$6
Function UsedRange(Optional S As Variant = 0) As Variant
’ シートの使用範囲を計算する関数
’ UsedRange([シート番号又はシート名]省略した場合は関数のあるシート)
’ UsedRange()→$K$9
’ UsedRange(“Sheet1”)→$K$9
’ UsedRange(2)→$D$6
On Error GoTo EXITFUN
Dim Sheet As Worksheet
Dim N As Long
Dim MRow As Long
Dim MColumn As Long
If S = 0 Then
N = ActiveSheet.Index
ElseIf IsNumeric(S) = True And Left(S, 1) <> “0” Then
N = S
Else
N = Sheets(S).Index
End If
Set Sheet = Worksheets(N)
MRow = Sheet.UsedRange.Rows(Sheet.UsedRange.Rows.Count).Row
MColumn = Sheet.UsedRange.Columns(Sheet.UsedRange.Columns.Count).Column
For i1 = MRow To 1 Step -1
For i2 = MColumn To 1 Step -1
If Sheets(S).Cells(i1, i2) <> “” Then
GoTo ExitRow
End If
Next
Next
ExitRow:
Row = i1
For i1 = MColumn To 1 Step -1
For i2 = MRow To 1 Step -1
If Sheets(S).Cells(i2, i1) <> “” Then
GoTo Exitcolumn
End If
Next
Next
Exitcolumn:
Column = i1
UsedRange = Cells(Row, Column).Address
Exit Function
EXITFUN:
UsedRange = CVErr(xlErrNull)
End Function
ここで紹介したコード使用による損害に対しては一切責任は負えません。