【VBA】UsedRangeで最終行・最終列を取得する

UsedRangeを使用して、シート上の最終行と最終列を取得するプロシージャを作成してみます。

Sheet1に下記のようにデータが入力されています。
D列に最終行、5行目に最終列が入力されています。

UsedRangeを使用して、最終行と最終列を取得するgetMaxRowUsedRangeと
getMaxColUsedRangeのコードは以下になります。

 1Option Explicit
 2
 3Function getMaxRowUsedRange(sht As Worksheet) As Long
 4'###################################################################################
 5'シート内の使用されている最終行を取得する
 6'-----------------------------------------------------------------------------------
 7'引数  :sht       シートオブジェクト
 8'戻り値:sht内で使用されている最終行
 9'###################################################################################
10  
11  getMaxRowUsedRange = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row
12  
13End Function
14Function getMaxColUsedRange(sht As Worksheet) As Long
15'###################################################################################
16'シート内の使用されている最終列を取得する
17'-----------------------------------------------------------------------------------
18'引数  :sht       シートオブジェクト
19'戻り値:sht内で使用されている最終列
20'###################################################################################
21  
22  getMaxColUsedRange = sht.UsedRange.Columns(sht.UsedRange.Columns.Count).Column
23  
24End Function
25
26Sub test_getLastRowCol()
27
28  Dim sht As Worksheet
29  Set sht = ThisWorkbook.Worksheets("Sheet1")
30  
31  Debug.Print sht.Name & "の最終行は" & getMaxRowUsedRange(sht) & "です。"
32  Debug.Print sht.Name & "の最終列は" & getMaxColUsedRange(sht) & "です。"
33  
34  Set sht = Nothing
35  
36End Sub

test_getLastRowColはgetMaxRowUsedRangeとgetMaxColUsedRangeの動作テストを行います。

test_getLastRowColを実行すると、シート上の最終行と最終列をイミディエイトウィンドウに出力します。

最終行はD列の「7」が出力されます。
最終列は5行目のH列の列番号「8」が出力されます。

関連ページ