VBA CurrentRegionでセル範囲を自動取得・最終行やセル操作を解説

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
VBAのcurrentregionプロパティについてアイキャッチ

「表のセル範囲をExcel VBA CurrentRegionを使って自動で取得するにはどうしたらいいんだろう...」
そんなお悩みを抱えていませんか?


表のデータ範囲を自動で取得したい

手動で範囲を指定する手間を省きたい

データが変わっても自動で対応できるようにしたい

その場合は、VBAの「CurrentRegionプロパティ」を
使用すると解決します!


この記事では、Excel VBAの「CurrentRegionプロパティ」を使って、セルの表範囲を自動で取得する方法を詳しく解説します。

「CurrentRegionプロパティ」を使うと、データの範囲を簡単に取得し、その範囲のデータを削除したり、配列として取得することができるので、日々のExcel作業が格段に楽になります。

使用例はすべてコピペして実行できるので、ぜひ最後までお読みいただき、実践してみてください 😊✨


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度

「VBAを使ってExcelの作業を効率化したいけど、どの本から始めたらいいか迷っている…」
そんな悩みはありませんか?

初心者がつまずきやすいのは、「基礎をしっかり理解できる本選び」です。
最初につまずくと、VBAに苦手意識を持ってしまい、学習が続きませんよね。

そんな方におすすめなのが、初心者に寄り添い、丁寧に解説されたVBAの入門書です。

  • VBAの基礎を丁寧に、ゼロから分かりやすく解説
  • 具体的なサンプルコードで、実務ですぐに使えるスキルが身につく
  • 手元に置いて何度も確認できるため、挫折せずに学習を続けられる

動画で学ぶのもいいけど、まずはじっくり書籍で学びたい!という方には特におすすめです。

目次

この記事を読むと「できるようになる」こと

VBAの「CurrentRegionプロパティ」ってどんなことができるの?

「CurrentRegion」とは、ExcelのVBAでセル範囲を自動で選択する際に非常に便利なプロパティです。

「CurrentRegion」を使用することで、指定したセルの周囲にデータが存在する範囲(空白のセルで囲まれた範囲)を自動的に取得することができます。

このプロパティを使うことで、表のセル範囲を動的に選択することができ、データの追加や削除にも自動で対応できます。

CurrentRegionプロパティでどのような事ができるのか?

VBAの「CurrentRegion」基本構文

CurrentRegionの構成
設定解説
  • expression

より詳しい情報は、Microsoft公式 – Range.CurrentRegion プロパティ (Excel)を参照してみてください。

CurrentRegion」の基本的な使い方を紹介

次のようなエクセルの表があるとします。

この表を「CurrentRegion」を使用して、セル範囲を自動で取得してみましょう。

CurrentRegionの動作確認。処理前。

セル「B2」を起点に、その周囲のデータが存在する範囲を自動で選択します。

Sub 表の範囲を自動で選択()
    Range("B2").CurrentRegion.Select
End Sub

このコードを実行すると、セル「B2」を起点とした範囲が自動的に選択されます。

このように「CurrentRegion」を使用すると、データが変動しても、常に最新の範囲を選択するので、手動で範囲を指定する手間が省けます。

CurrentRegionの動作確認。処理後。
スポンサーリンク

CurrentRegionがよく使われる事例

セル範囲を自動で取得できる「CurrentRegion」は、以下の場合でよく使用されます。

  • データの削除やクリア操作を行うとき
    • CurrentRegionを使用すると、表全体のデータ範囲を一度にクリアまたは削除することができます。
      これにより、データのリセットが簡単になり、手動で範囲を指定する必要がなくなります。
  • データの範囲を配列に格納するとき
    • CurrentRegionを使うと、表全体を一括で配列に格納することができ、VBAでのデータ操作が効率化されます。
  • フィルタリングやソートを行うとき
    • 表全体のデータに対して、フィルタリングやソートを行う際にCurrentRegionを使えば、操作範囲を簡単に指定できます。
  • データを別のシートやファイルにコピーするとき
    • CurrentRegionは、データの範囲を選択して、他のシートやブックに効率的にコピーする際に便利です。
  • 統計や集計処理を行うとき
    • データの合計や平均などの集計処理を行う場合、CurrentRegionを使えば範囲を動的に取得して計算を行うことができます。

合わせて使用されることが多い「Offset」「Resize」「Intersect」について

VBAの「CurrentRegion」は、単体で使用することもできますが、下記のような「Offserプロパティ」や「Resizeメソッド」及び「Intersectメソッド」と合わせて使用することで、さらに柔軟に使用することができます。

Offset プロパティ

Offsetは、CurrentRegionで取得した範囲から、指定した行や列だけずらした位置のセル範囲を取得するための機能です。
例えば、現在のデータのすぐ下の行に新しいデータを追加したい場合に使います。

Resize メソッド

Resizeは、CurrentRegionで取得した範囲のサイズ(行数や列数)を変更したいときに使います。
これにより、取得したデータ範囲を拡大したり縮小したりすることができます。

Intersect メソッド

Intersectは、CurrentRegionと他のセル範囲の「重なっている部分」だけを取得する機能です。
これは、データの中から特定の条件に合う範囲を抽出したいときに便利です。

VBAの「CurrentRegion」を使う際の注意ポイント

VBAの「CurrentRegion」は、セル範囲を自動で取得できる便利なプロパティですが、使用時にはいくつか注意点があります。

注意1 : 空白行や空白列も範囲として扱われる

CurrentRegionは「空白行」や「空白列」が、「最終行」「最終列」に混ざっていても自動的に範囲として検出します。
そのため、意図しない空白が含まれていると、正しく範囲を取得できない場合があります。

空白行や空白列も範囲として扱われる。

注意2 : 隣接するセルに空白があっても範囲を取得できる

CurrentRegionは、表の中に空白セルがあっても、隣接するセル同士が繋がっていると自動的に範囲として検出します。

CurrentRegionで取得した範囲を使用して別の処理を行う場合は、空白セルが原因でエラーが発生する可能性があるため、注意が必要です。

隣接するセルに空白があっても範囲を取得できる。

注意3 : 複数の表がある場合は範囲を分けて取得する

CurrentRegionは、表同士が「空白行」「空白列」で分断されていると、別のセル範囲として取得します。

複数の表を一括で操作したい場合は、別の方法(Unionメソッドを使用するなど)で範囲を指定する必要があります。

複数の表がある場合は範囲を分けて取得する。
スポンサーリンク

VBAの「CurrentRegion」の使用例をご紹介

ここからは、「CurrentRegion」の使用例を紹介します。

以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。

今回の使用例は、次のようなエクセルの表を使用して解説を進めていきますね。

使用例の元エクセル

VBAをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?

そんな方には、UdemyのVBA講座がおすすめです。

動画での丁寧な解説や、実践的な学習スタイルで、初心者でも無理なく基礎から応用まで習得できます。
自己学習を進める上で、何度でも繰り返し見返せる講座は非常に心強い味方になりますよ!

多彩な講座から自分に合った講座を探そう!
UdemyでVBAを検索
UdemyでVBAを検索 画像出典:Udemy

\  自分のペースで学べるVBA講座はこちら  /

使用例1: CurrentRegionを使用し、表の大きさを取得

CurrentRegionを使用して、表全体の「行数」と「列数」を取得し、メッセージボックスに表示する方法を紹介します。

主な使用用途 : このコードは、Excelの特定のセルを基点に、そのセルを含むデータの範囲全体(表)の行数と列数を取得するために使用します。
表の範囲が自動で変更される場合でも、手動で範囲を設定する必要がなくなるため、効率的です。

コード例

Sub ShowLastRowAndColumn()
    Dim lastRow As Long
    Dim lastColumn As Long
    
    '// A1セルを基点にCurrentRegionを取得
    lastRow = Range("B2").CurrentRegion.Rows.Count
    lastColumn = Range("B2").CurrentRegion.Columns.Count
    
    '// 最終行と最終列をメッセージボックスに表示
    MsgBox "表の行数: " & lastRow & "、表の列数: " & lastColumn
End Sub

処理結果

使用例1: CurrentRegionを使用し、表の大きさを取得の処理結果

コードの動作概要

STEP
変数「rowCount」と「columnCount」の宣言

表の行数と列数を格納するために、変数「rowCount」と「columnCount」を Long 型として宣言します。

STEP
CurrentRegion の取得

基点となるセル「A1」を指定し、そのセルを含む表全体の範囲を取得します。
この範囲の行数を「rowCount」に、列数を「columnCount」に格納します。

STEP
行数と列数をメッセージボックスに表示

取得した行数と列数の情報を、メッセージボックスで表示します。

このコードで使用している機能

スクロールできます
機能名説明
Dim (変数)最終行・最終列の結果を変数にセットします。
CurrentRegion表全体の範囲を取得します。
lastRow (最終行取得)CurrentRegionを使用し、最終行を取得します。
MsgBox取得した最終行・採取列をメッセージボックスで表示します。

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub ShowTableSize()
    • この行は、「Sub ステートメント」を使用して、新しいサブルーチン「ShowTableSize」を定義しています。
      このサブルーチンは、Excelの表の大きさを自動的に取得して表示する機能を持っています。
  2. Dim rowCount As Long
    • ここでは、変数「rowCount」を Long 型で宣言しています。
      「rowCount」は、表の行数を保持するための変数です。
      Long 型は、大きな整数を扱うためのデータ型で、表の行数を保存するのに適しています。
  3. Dim columnCount As Long
    • ここでは、変数「columnCount」を Long 型で宣言しています。
      「columnCount」は、表の列数を保持するための変数です。
      Long 型は、整数を扱うためのデータ型で、表の列数を保存するのに適しています。
  4. rowCount = Range(“A1”).CurrentRegion.Rows.Count
    • Range(“A1”).CurrentRegion は、セル「A1」を基点に、そのセルを含むデータの範囲全体(つまり、連続したデータのブロック)を取得します。
      「.Rows.Count」は、その取得した範囲の行数を返します。
      これにより、表範囲の行数が変数「rowCount」に格納されます。
  5. columnCount = Range(“A1”).CurrentRegion.Columns.Count
    • Range(“A1”).CurrentRegion でセル「A1」を基点に、そのセルを含むデータの範囲全体を取得します。
      「.Columns.Count」は、その取得した範囲の列数を返します。
      これにより、表範囲の列数が変数「columnCount」に格納されます。
  6. MsgBox “表の行数: ” & rowCount & “、表の列数: ” & columnCount
    • MsgBox 関数を使って、取得した表範囲の行数 (rowCount) と列数 (columnCount) をメッセージボックスで表示します。
      このメッセージボックスは、ユーザーに表の大きさを簡単に知らせるために使用されます。
  7. End Sub
    • この行は、サブルーチンの終了を示しています。
      すべての処理が完了すると、このサブルーチンは終了し、プログラムは次のステップに進みます。

このコードは、指定したセルを基点にして、そのセルを含むデータの範囲全体(表)の行数と列数を取得し、ユーザーに表示します。
「CurrentRegion」を使うことで、Excelのデータが記述されているセル範囲を自動で取得できるため、セル範囲が変動する場合でも効率的に表の大きさを把握することが可能です。

この方法は、データが追加・削除されることの多いテーブル(表)で、常に最新の表の範囲を扱いたい場合に非常に便利です。
操作が自動化されるため、手動で範囲を変更する必要がなく、作業効率が向上します。

使用例2: 最終行と最終列を取得する方法

CurrentRegionを使用して、表の最終行と最終列を取得し、それらをメッセージボックスに表示する方法を紹介します。

主な使用用途 : このコードは、表内のデータが動的に増減しても、常に正しい最終行や最終列を取得したい場合に使用します。
データ追加時に次の空き行を特定したり、データ範囲を確認したいときに便利です。

コード例

Sub GetLastRowAndColumn()
    Dim lastRow As Long
    Dim lastColumn As Long
    
    '// B2セルを基点にCurrentRegionを取得し、最終行と最終列を計算
    With Range("B2").CurrentRegion
        lastRow = .Row + .Rows.Count - 1
        lastColumn = .Column + .Columns.Count - 1
    End With
    
    '// 最終行と最終列をメッセージボックスに表示
    MsgBox "最終行: " & lastRow & "、最終列: " & lastColumn
End Sub

処理結果

使用例2: 最終行と最終列を取得する方法の処理結果

コードの動作概要

STEP
CurrentRegionで範囲を取得

Range(“B2”).CurrentRegion で、B2セルを基点にデータ範囲全体を取得します。

STEP
最終行の計算

変数「lastRow」は、CurrentRegion の最初の行に範囲の行数を足して計算します。
これにより、最終行が特定されます。

STEP
最終列の計算

変数「lastColumn」も同様に、CurrentRegion の最初の列に範囲の列数を足して最終列を特定します。

STEP
最終行と最終列を表示

MsgBox によって、最終行と最終列の番号を表示します。

このコードで使用している機能

スクロールできます
機能名説明
Dim (変数)最終行・最終列の結果を変数にセットします。
CurrentRegion表全体の範囲を取得します。
With (オブジェクトを繰り返し使用)withを使用することで、繰り返し表記しなくて良くなり冗長さが解消されます。
MsgBox取得した最終行・採取列をメッセージボックスで表示します。

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub GetLastRowAndColumn()
    • この行は、新しいサブルーチン(Subプロシージャ)「GetLastRowAndColumn」を定義しています。
      このサブルーチンは、指定した範囲(CurrentRegion)の最終行と最終列を計算して表示するために使用されます。
  2. Dim lastRow As Long
    • この行では、変数「lastRow」を宣言しています。
      Long 型のデータ型は、整数を格納するためのもので、この場合は、最終行の行番号を格納します。
  3. Dim lastColumn As Long
    • この行では、変数「lastColumn」を宣言しています。
      こちらも Long 型のデータ型で、最終列の列番号を格納します。
  4. With Range(“B2”).CurrentRegion
    • With ステートメントは、オブジェクトに対して繰り返し操作を行うための構文です。
      ここでは、Range(“B2”).CurrentRegionというオブジェクトに対して、一連の操作をまとめて行います。
  5. lastRow = .Row + .Rows.Count – 1
    • この行では、「最終行」を計算しています。
    • .Row
      • CurrentRegionの最初の行番号を取得します。
    • .Rows.Count
      • CurrentRegionの行数を取得します。
    • .Row + .Rows.Count – 1
      • 最初の行番号に行数を足し、1を引くことで、最終行を計算します。
  6. lastColumn = .Column + .Columns.Count – 1
    • この行では、最終列を計算しています。
    • .Column
      • CurrentRegionの最初の列番号を取得します。
    • .Columns.Count
      • CurrentRegionの列数を取得します。
    • .Column + .Columns.Count – 1
      • 最初の列番号に列数を足し、1を引くことで、最終列を計算します。
  7. End With
    • この行は、Withステートメントの終了を示します。
      ここで、Withブロック内の操作が完了したことを意味します。
  8. MsgBox “最終行: ” & lastRow & “、最終列: ” & lastColumn
    • MsgBox関数を使用して、最終行と最終列の番号をメッセージボックスに表示します。
    • “最終行: ” & lastRow
      • メッセージボックスに「最終行: 」という文字列と、lastRow(最終行の行番号)を表示します。
    • “最終列: ” & lastColumn
      • 「最終列: 」という文字列と、lastColumn(最終列の列番号)を表示します。
  9. End Sub
    • この行は、サブルーチン「GetLastRowAndColumn」の終了を示します。
      これにより、このサブルーチンが完了し、プログラムは次のステップに進みます。

このサブルーチン「GetLastRowAndColumn」は、セル「B2」を基点にCurrentRegionを使用して表全体を取得し、その範囲の最終行と最終列を計算して表示するコードです。

CurrentRegionを使用することで、表のサイズが動的に変わった場合でも常に最新の最終行・最終列を取得できるため、非常に便利です。

使用例3: セルの色を一括で変更する

CurrentRegionを使用して、データが含まれるセル範囲の背景色を変更する方法を紹介します。

主な使用用途 : このコードは、Excelでデータが記述されているセル範囲を簡単に把握したいときに使用します。セルの範囲全体を一目で確認するために、範囲を目立たせる目的で背景色を変更する場合に便利です。

コード例

Sub HighlightCurrentRegion()
    Range("B2").CurrentRegion.Interior.Color = vbYellow
End Sub

処理結果

使用例3: セルの色を一括で変更するの処理結果

コードの動作概要

STEP
CurrentRegionでセル範囲を取得

基点となるセル「A1」から始まるデータの連続した範囲(表全体)を取得します。

STEP
範囲の背景色を変更

取得した範囲の背景色を黄色(vbYellow)に設定して強調表示します。

このコードで使用している機能

スクロールできます
機能名説明
CurrentRegion表全体の範囲を取得します。
Interior.Color (セルの色変更)セルの背景色を変更することができます。

    1行ずつコードを解説

    クリック」してコードの詳細解説を見る
    1. Sub HighlightCurrentRegion()
      • この行は、新しいサブルーチン(Subプロシージャ)「HighlightCurrentRegion」を定義しています。
        このサブルーチンは、セル範囲を強調表示するために使用されます。
    2. Range(“B2”).CurrentRegion.Interior.Color = vbYellow
      • Range(“B2”).CurrentRegion は、セル「A1」を基点に、そのセルを含むデータのセル範囲全体を取得します。
        「.Interior.Color」は、その範囲のセルの背景色を設定するプロパティです。
        「vbYellow」は、VBAで定義された定数で、「黄色」を表します。
        この行により、セル「B2」を含むデータ範囲全体のセルの背景色が黄色に変更され、強調表示されます。
    3. End Sub
      • この行は、サブルーチンの終了を示しています。
        すべての処理が完了すると、このサブルーチンは終了し、プログラムは次のステップに進みます。

    このコードは、Excelの特定のセルを基点として、そのセルを含むデータ範囲全体を強調表示するための方法をになります。
    「CurrentRegion」を使用することで、セルの範囲を自動で取得し、範囲内のすべてのセルを一度に操作することが可能になります。

    データの視認性を高めるため、特に大きなデータセットや複数の表があるシートで役立ちます。

    使用例4: すべてのデータを一括にクリア(削除)する

    CurrentRegionを使用してセル範囲を自動取得、その範囲内のすべてのデータをクリア(削除)する方法を紹介します。

    主な使用用途 : このコードは、表のデータをすべて削除したい場合に使用します。特定の範囲内のセルの内容だけをクリアし、セルの書式や境界線などはそのままにしておきたいときに便利です。

    コード例

    Sub ClearCurrentRegion()
        Range("B2").CurrentRegion.ClearContents
    End Sub

    処理結果

    使用例4: すべてのデータを一括にクリア(削除)するの処理結果

    コードの動作概要

    STEP
    基点セルの設定

    セル「B2」を基点とするデータの範囲(表全体)を取得します。

    STEP
    範囲内のデータをクリア

    取得した範囲内のセルの内容(値と数式)をすべてクリアします。

    このコードで使用している機能

    スクロールできます
    機能名説明
    CurrentRegion表全体の範囲を取得します。
    ClearContents (数式と値をクリア)セルに記載されている数式と値をクリアします。

      1行ずつコードを解説

      クリック」してコードの詳細解説を見る
      1. Sub ClearCurrentRegion()
        • この行は、新しいサブルーチン(Subプロシージャ)「ClearCurrentRegion」を定義しています。
          このサブルーチンは、指定した範囲内のデータを削除するために使用されます。
      2. Range(“B2”).CurrentRegion.ClearContents
        • Range(“B2”).CurrentRegion は、セル「B2」を基点に、そのセルを含むデータのセル範囲全体を取得します。
          「.ClearContents」は、取得した範囲のセルの内容(値や数式)をすべてクリア(削除)するメソッドです。
          ただし、セルの書式設定や枠線などはそのまま残ります。
          この行によって、セル「B2」を基点とする連続したデータ範囲全体の内容がすべてクリアされます。
      3. End Sub
        • この行は、サブルーチンの終了を示しています。
          すべての処理が完了すると、このサブルーチンは終了し、プログラムは次のステップに進みます。

      このコードは、Excelの特定のセルを基点として、そのセルを含むデータ範囲全体の内容を効率的にクリアする方法を示しています。

      「CurrentRegion」を使用することで、動的に範囲を取得し、範囲内のすべてのセルを一度に操作することが可能になります。
      データのリセットやクリーニングを行いたい場合に非常に役立ちます。

      使用例5: 表のヘッダーを残してデータ部を削除する (OffsetとResizeを使用)

      CurrentRegionとOffset、Resizeを使用し、表のヘッダー(1行目)を残し、データ部分のみをクリアする方法を紹介します。

      主な使用用途 : このコードは、表のヘッダー部分を残したまま、データ部分のみを一括でクリア(削除)したい場合に使用します。
      OffsetとResizeを組み合わせることで、特定の範囲のみを操作でき、柔軟なデータ管理が可能になります。

      Sub ClearDataOnly()
          Dim dataRange As Range
          
          '// B2セルを基点にCurrentRegionを取得し、ヘッダーを除くデータ部分のみを選択
          Set dataRange = Range("B2").CurrentRegion.Offset(1, 0).Resize(Range("B2").CurrentRegion.Rows.Count - 1)
          
          '// データ部分をクリア
          dataRange.ClearContents
      End Sub

      処理結果

      使用例5: 表のヘッダーを残してデータ部を削除する (OffsetとResizeを使用)の処理結果

      コードの動作概要

      STEP
      CurrentRegionで範囲を取得

      Range(“B2”).CurrentRegion で、B2セルを基点にセル範囲全体を取得します。
      ここで取得される範囲には、ヘッダー行も含まれます。

      STEP
      Offsetでデータ部分を選択

      Offset(1, 0) を使用して、1行目(ヘッダー行)を除いたデータ部分を選択します。

      STEP
      Resizeで行数を調整
      • Resize(Range(“B2”).CurrentRegion.Rows.Count – 1) を使用して、選択範囲の行数を1行減らし、データ部分のみを選択します。
      STEP
      データ部分をクリア

      ClearContents メソッドを使用して、選択されたデータ部分をクリアします(値や数式のみ削除、書式は維持されます)。

      このコードで使用している機能

      スクロールできます
      機能名説明
      Dim – Set (オブジェクト変数)1行目(ヘッダー行)を除いたデータ部分を取得します。
      CurrentRegion表全体の範囲を取得します。
      Offset (セル範囲を移動)表全体の範囲をずらします。
      Resize (セル範囲を変更)表全体の範囲を変更します。
      ClearContents (数式と値をクリア)セルに記載されている数式と値をクリアします。

      1行ずつコードを解説

      クリック」してコードの詳細解説を見る
      1. Sub ClearDataOnly()
        • この行は、新しいサブルーチン(Subプロシージャ)「ClearDataOnly」を定義しています。
          このサブルーチンは、指定された範囲のうち、ヘッダー行を除いたデータ部分をクリアするために使用されます。
      2. Dim dataRange As Range
        • ここでは、変数「dataRange」を宣言しています。
          Range 型は、Excelシートのセル範囲を扱うためのデータ型で、ここで「dataRange」は、クリアするデータ範囲を指定するために使用されます。
      3. Set dataRange = Range(“B2”).CurrentRegion.Offset(1, 0).Resize(Range(“B2”).CurrentRegion.Rows.Count – 1)
        • この行では、CurrentRegion と Offset、Resize を組み合わせて、ヘッダーを除くセル範囲を取得しています。( ヘッダー行を除いた表全体のデータ部分のみ )
          • Range(“B2”).CurrentRegion
            • セル「B2」を基点に、そのセルを含む連続するセル範囲(表全体)を取得します。
              CurrentRegionは、セル範囲が空白セルで区切られた範囲全体を選択します。
          • Offset(1, 0)
            • 「Offset」は、取得した範囲を基点に1行下にシフトします。
              これにより、ヘッダー(1行目)を除外してデータ部分を選択できます。
          • Resize(Range(“B2”).CurrentRegion.Rows.Count – 1)
            • 「Resize」は、範囲の行数または列数を変更します。
              「Rows.Count – 1」によって、元の行数から1行減らすことで、データ部分だけを取得します。
      4. dataRange.ClearContents
        • この行では、ClearContentsメソッドを使用して、取得したデータ範囲の「内容(値や数式)」をすべてクリアします。
          「ClearContents」は、セルの内容のみを削除し、セルの書式や罫線などはそのまま維持されます。
          つまり、この行を実行すると、ヘッダーを残した状態で、データ部分のみがクリアされます。
      5. End Sub
        • この行は、サブルーチン「ClearDataOnly」の終了を示します。
          これにより、すべての処理が完了すると、このサブルーチンは終了し、プログラムは次のステップに進みます。

      このコードは、CurrentRegionを使って自動で表全体の範囲を取得し、「Offset」と「Resize」でヘッダーを除いたデータ部分のみを対象として、その内容を削除するコードです。

      特定の範囲を手動で指定する必要がなく、表が動的に変化しても対応できるため、効率的です。

      使用例6: データを2次元配列に格納する

      セル範囲内のデータをそのまま2次元配列に格納する方法を紹介します。
      この配列はそのままローカルウィンドウで確認できます。

      主な使用用途 : このコードは、動的にデータ範囲を取得し、その範囲内のすべてのセルを一度に操作できるようにします。
      配列にデータを格納することで、データの加工や分析を効率的に行うことができます。

      コード例

      Sub StoreDataInArray()
          Dim dataArr As Variant
          
          '// A1セルを基点にCurrentRegionを2次元配列に格納
          dataArr = Range("B2").CurrentRegion.Value
          
          '// 配列の内容は、ローカルウィンドウで確認
          Debug.Print dataArr(1, 1)  ' 例として配列の一部を表示
          
          Stop
      End Sub

      処理結果

      使用例6: データを2次元配列に格納するの処理結果

      コードの動作概要

      STEP
      変数「dataArr」の宣言

      データを格納するための2次元配列「dataArr」を Variant 型で宣言します。
      Variant 型は、配列を含む任意のデータ型を格納できるため、柔軟なデータ操作が可能です。

      STEP
      CurrentRegionを基点にデータを取得

      Range(“B2”).CurrentRegion.Value を使用して、セル「B2」を基点にして、そのセルを含む連続したデータ範囲を自動的に取得し、2次元配列「dataArr」に格納します。

      STEP
      配列の内容をローカルウィンドウで確認
      • Debug.Print dataArr(1, 1) は、配列の一部(ここでは最初の行と列のデータ)を表示し、データが正常に格納されているかを確認します。
        「Stop ステートメント」により、コードの実行が一時停止され、ローカルウィンドウで配列の内容を調べることができます。

      このコードで使用している機能

      スクロールできます
      機能名説明
      CurrentRegion表全体の範囲を取得します。
      2次元配列表全体を2次元配列として取得します。
      Debug.Print(結果を出力)結果をイミディエイトウィンドウに出力します。

      1行ずつコードを解説

      クリック」してコードの詳細解説を見る
      1. Sub StoreDataInArray()
        • 新しいサブルーチン「StoreDataInArray」を定義しています。
          このサブルーチンは、指定されたセル範囲のデータを2次元配列に格納します。
      2. Dim dataArr As Variant
        • Variant 型の変数「dataArr」を宣言しています。
          Variant 型を使用することで、様々なデータ型のデータを一つの変数に格納することができます。
          この場合、2次元配列を格納します。
      3. dataArr = Range(“B2”).CurrentRegion.Value
        • Range(“B2”).CurrentRegion は、セル “B2” を基点にして、そのセルを含む連続したセル範囲を取得します。
          「.Value プロパティ」を使うことで、この範囲内の全てのセルの値を2次元配列として「dataArr」に格納します。
      4. Debug.Print dataArr(1, 1)
        • 「Debug.Print」は、VBAのデバッグ用の出力コマンドで、イミディエイトウィンドウ(Ctrl + Gで開く)に値を表示します。
          「dataArr(1, 1)」 は、配列「dataArr」の最初の行と列のデータを表示します。
      5. Stop
        • コードの実行を一時停止するコマンドです。
          これにより、ローカルウィンドウで変数の値を調査できます。
          デバッグ時に役立ちます。
      6. End Sub
        • この行は、サブルーチンの終了を示しています。
          すべての処理が完了すると、このサブルーチンは終了し、プログラムは次のステップに進みます。

      このコードを使えば、Excelのシートから動的にデータを取得して、効率的に操作できます。
      特に、データの大きさが変わる場合でも、「CurrentRegion」を使うことで範囲を自動で取得し、常に最新のデータを操作することが可能です。

      複数の操作を行う際には、この2次元配列を使って、例えばデータの並び替えやフィルタリングなどの高度な操作を行うことができます。

      スポンサーリンク

      この記事のまとめ

      「CurrentRegionプロパティ」は、Excel VBAで表のセル範囲を自動的に取得し、さまざまな操作を簡単に行うために非常に便利なツールです。

      これにより、データの追加や削除にも動的に対応できるため、手動で範囲を設定する必要がなくなり、効率的な作業が可能になります。

      ポイントのおさらい

      この記事の使用例を実践することで、VBAの「CurrentRegionプロパティ」を使いこなせるようになります。

      この記事が役に立ったと思った方は、ぜひサイトマップから違う記事も参照ください。

      あわせて読みたい
      サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「共通」を見る 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」...
      スポンサーリンク
      よかったらシェアしてね!
      • URLをコピーしました!
      • URLをコピーしました!
      目次