VBAにおいて、
特定の行・列に対しての最終行・列の取得は
ネットによく記載されているが、
ワークシートに対しての最終行・列の取得は
見かけないので、
関数として作成してみた。
'最終行取得関数
Function getLastRow_WS(WS As Worksheet) As Long
Dim LastRow As Long
Dim getData As Variant
Dim endFlag As Boolean
getData = WS.UsedRange
getLastRow = 0
endFlag = False
Dim Cl As Long, Ro As Long
For Ro = UBound(getData, 1) To 1 Step -1
For Cl = UBound(getData, 2) To 1 Step -1
If getData(Ro, Cl) <> "" Then
getLastRow_WS = Ro + WS.UsedRange.Row - 1
endFlag = True
Exit For
End If
Next
If endFlag = True Then
Exit For
End If
Next
End Function
'最終列取得関数
Function getLastColumn_WS(WS As Worksheet) As Long
Dim LastRow As Long
Dim getData As Variant
Dim endFlag As Boolean
getData = WS.UsedRange
getLastColumn = 0
endFlag = False
Dim Cl As Long, Ro As Long
For Cl = UBound(getData, 2) To 1 Step -1
For Ro = UBound(getData, 1) To 1 Step -1
If getData(Ro, Cl) <> "" Then
getLastColumn_WS = Cl + WS.UsedRange.Column - 1
endFlag = True
Exit For
End If
Next
If endFlag = True Then
Exit For
End If
Next
End Function

コメント