構文
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
注意点
- 今回はシート名などは明示していませんのでActiveSheetから取得します。
- 別のシートや別のブックのセル範囲を取得する場合は、Worksheetsを事前に指定しましょう。
ワークシート名を変数にSetし、短い名前で利用する【マクロ初級者必読】 - CurrentRegionプロパティとの違いは、以下です。
・CurrentRegion:指定したセルが属する表範囲
・UsedRange:指定したシートで使用している表範囲
関連記事
ExcelVBAマクロ「最終行」「最終列」の判断処理をパーツ化する
ExcelVBAマクロ-他ブック他シートの「最終行」「最終列」取得処理をパーツ化する
ワークシートをコピーする【Copyメソッド】【ExcelVBA】
コメント