PeaceJetのブログ

金融系の社内エンジニアをやりながら、マーケティングやプランナーなども

【VBA】データが入力されている範囲を選択する方法

データが入力されている範囲を選択する方法

メモ的に書いていきますので、読みにくいかもしれません。

まず、シートを指定して呼び出せるFunctionプロシージャを作成します。

'こちらで、データが入力されいている最終行と最終列を取得します。
Public Function LastRowNumber(ByVal Ws As Worksheet) As Long
    
    Dim X As Long: X = Ws.Cells.SpecialCells(xlCellTypeLastCell).Row
    
    LastRowNumber = X
   
End Function
Public Function LastColumnNumber(ByVal Ws As Worksheet) As Long
    
    Dim Y As Long: Y = Ws.Cells.SpecialCells(xlCellTypeLastCell).Column
    
    LastColumnNumber = Y
   
End Function
.
'呼び出し方
Public Sub GetLastNumber()

    Dim Ws As Worksheet: Set Ws = ThisWorkbook.Sheets("Sheet1")

    MsgBox LastRowNumber(Ws)
    MsgBox LastColumnNumber(Ws)

End Sub

RangeオブジェクトをFunctionの戻り値にする方法

Public Function GetActiveRange(ByVal xWs As Worksheet) As Range

    Dim sRn As Range: Set sRn = xWs.Cells(1, 1)
    Dim eRn As Range: Set eRn = xWs.Cells(LastRowNumber(xWs), LastColumnNumber(xWs))
    Dim rRn As Range: Set rRn = xWs.Range(sRn, eRn)
    
'    ここで、注意なのが戻り値がオブジェクトの場合には、Setしてあげないとエラーになります。
    Set GetActiveRange = rRn
    
End Function

こんなエラーです。
f:id:PeaceJet:20170606155913p:plain

最後に以下のSubプロシージャを使用して、アクティブなRangeを得ることができます。

Public Sub getRange()

    Call GetActiveRange(ThisWorkbook.Sheets("Sheet1")).Select

End Sub