F052 シートの使用範囲を調べる関数

2019-06-01
EXCEL自作関数

 シートの使用範囲を計算する関数です。値が入力されている最終行と最終列の交差するセルを表示します。なお、値のみで罫線などは含みません。
 セルの使用範囲を知ることで、データの件数を調べたり、他の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

ここで紹介したコード使用による損害に対しては一切責任は負えません。