関数・メソッド

ワークシートの使用セル範囲を取得する【UsedRangeプロパティ】【ExcelVBA】

構文

WorkSheets.UsedRange

UsedRange・・・指定したワークシートの使用しているセル範囲を取得

マクロを実行する際、処理する件数が可変な場合は多いです。 最終行最終列を取得して判断してもよいのですが、 単純にセル範囲をフォーマットをコピーする場合などはUsedRangeもよいと考えます。

指定したシートのセル範囲を取得するコードサンプル


Public Sub sample()

    '■ワークシート内に値が一つもない場合
    Debug.Print ActiveSheet.UsedRange.Address '$A$1
    
    '■ワークシート内の特定場所に値があった場合
    Range("B2") = 1
    Debug.Print ActiveSheet.UsedRange.Address '$B$2
    '■ワークシート内の複数場所に値があった場合
    Range("B2:C5") = 1
    Debug.Print ActiveSheet.UsedRange.Address '$B$2:$C$5
    
    
    'UsedRangeから特定行や列も取得
    '■使用セルの「1行目」を取得
    Debug.Print ActiveSheet.UsedRange.Rows(1).Address   '$B$2:$C$2
    '■使用セルの「1列目」を取得
    Debug.Print ActiveSheet.UsedRange.Columns(1).Address   '$B$2:$B$5
    
    '最終行、最終列のアドレスを取得
    With ActiveSheet.UsedRange
        '■使用セルの「最終行アドレス」を取得
        Debug.Print .Rows(.Rows.Count).Address     '$B$5:$C$5
        '■使用セルの「最終列アドレス」を取得
        Debug.Print .Rows(.Columns.Count).Address  '$B$3:$C$3
    End With
    
    '最終行、最終列の行番号/列番号を取得
    With ActiveSheet.UsedRange
        '■使用している「セルの最終行」を取得
        Debug.Print .Rows(.Rows.Count).Row            '5(5行目)
        '■使用している「セルの最終列」を取得
        Debug.Print .Columns(.Columns.Count).Column   '3(C列)
    End With
    
End Sub

注意点

関連記事

ExcelVBAマクロ「最終行」「最終列」の判断処理をパーツ化する
ExcelVBAマクロ-他ブック他シートの「最終行」「最終列」取得処理をパーツ化する
ワークシートをコピーする【Copyメソッド】【ExcelVBA】

コメント

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