VBA ワークブックの最終行・列取得関数

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

コメント

タイトルとURLをコピーしました