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

・表のデータ範囲を自動で取得したい
・手動で範囲を指定する手間を省きたい
・データが変わっても自動で対応できるようにしたい



その場合は、VBAの「CurrentRegionプロパティ」を
使用すると解決します!
この記事では、Excel VBAの「CurrentRegionプロパティ」を使って、セルの表範囲を自動で取得する方法を詳しく解説します。
「CurrentRegionプロパティ」を使うと、データの範囲を簡単に取得し、その範囲のデータを削除したり、配列として取得することができるので、日々のExcel作業が格段に楽になります。
使用例はすべてコピペして実行できるので、ぜひ最後までお読みいただき、実践してみてください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
この記事を読むとできるようになること
この記事を読むことで、以下のことができるようになります。
- CurrentRegion を使って、セル範囲を自動で取得する方法を理解する
- CurrentRegion がどのような場面でよく使われるのかを理解する
- CurrentRegion を使用する際の注意ポイントを把握する
- CurrentRegion を実際にどのように使用するのか?確認する
VBAの「CurrentRegionプロパティ」を徹底解説
「CurrentRegion」とは、ExcelのVBAでセル範囲を自動で選択する際に非常に便利なプロパティです。
「CurrentRegion」を使用することで、指定したセルの周囲にデータが存在する範囲(空白のセルで囲まれた範囲)を自動的に取得することができます。
このプロパティを使うことで、表のセル範囲を動的に選択することができ、データの追加や削除にも自動で対応できます。


VBAの「CurrentRegion」基本構文


- expression
- 「Range オブジェクト」を表す変数を指定します。
※「Range」や「Cells」などになります。
- 「Range オブジェクト」を表す変数を指定します。
より詳しい情報は、Microsoft公式 – Range.CurrentRegion プロパティ (Excel)を参照してみてください。
「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で取得した範囲から、指定した行や列だけずらした位置のセル範囲を取得するための機能です。
例えば、現在のデータのすぐ下の行に新しいデータを追加したい場合に使います。
⇒ Offsetについては、別記事で解説しています。
Resize メソッド
Resizeは、CurrentRegionで取得した範囲のサイズ(行数や列数)を変更したいときに使います。
これにより、取得したデータ範囲を拡大したり縮小したりすることができます。
⇒ Resizeについては、別記事で解説しています。
Intersect メソッド
Intersectは、CurrentRegionと他のセル範囲の「重なっている部分」だけを取得する機能です。
これは、データの中から特定の条件に合う範囲を抽出したいときに便利です。
VBAの「CurrentRegion」を使う際の注意ポイント
VBAの「CurrentRegion」は、セル範囲を自動で取得できる便利なプロパティですが、使用時にはいくつか注意点があります。
ここでは、そのポイントを紹介します。


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


隣接するセルに空白があっても範囲を取得できる
CurrentRegionは、表の中に空白セルがあっても、隣接するセル同士が繋がっていると自動的に範囲として検出します。
CurrentRegionで取得した範囲を使用して別の処理を行う場合は、空白セルが原因でエラーが発生する可能性があるため、注意が必要です。


複数の表がある場合は範囲を分けて取得する
CurrentRegionは、表同士が「空白行」「空白列」で分断されていると、別のセル範囲として取得します。
複数の表を一括で操作したい場合は、別の方法(Unionメソッドを使用するなど)で範囲を指定する必要があります。


VBAの「CurrentRegion」の使用例をご紹介
ここからは、「CurrentRegion」の使用例を紹介します。
今回の使用例は、次のようなエクセルの表を使用して解説を進めていきます。
まずこちらをご確認ください。


VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。
特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。


\ 自分のペースで学べる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
処理結果


コードの動作概要
表の行数と列数を格納するために、変数「rowCount」と「columnCount」を Long 型として宣言します。
基点となるセル「A1」を指定し、そのセルを含む表全体の範囲を取得します。
この範囲の行数を「rowCount」に、列数を「columnCount」に格納します。
取得した行数と列数の情報を、メッセージボックスで表示します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub ShowTableSize()
- この行は、「Sub ステートメント」を使用して、新しいサブルーチン「ShowTableSize」を定義しています。
このサブルーチンは、Excelの表の大きさを自動的に取得して表示する機能を持っています。
- この行は、「Sub ステートメント」を使用して、新しいサブルーチン「ShowTableSize」を定義しています。
- Dim rowCount As Long
- ここでは、変数「rowCount」を Long 型で宣言しています。
「rowCount」は、表の行数を保持するための変数です。
Long 型は、大きな整数を扱うためのデータ型で、表の行数を保存するのに適しています。
- ここでは、変数「rowCount」を Long 型で宣言しています。
- Dim columnCount As Long
- ここでは、変数「columnCount」を Long 型で宣言しています。
「columnCount」は、表の列数を保持するための変数です。
Long 型は、整数を扱うためのデータ型で、表の列数を保存するのに適しています。
- ここでは、変数「columnCount」を Long 型で宣言しています。
- rowCount = Range(“A1”).CurrentRegion.Rows.Count
- Range(“A1”).CurrentRegion は、セル「A1」を基点に、そのセルを含むデータの範囲全体(つまり、連続したデータのブロック)を取得します。
「.Rows.Count」は、その取得した範囲の行数を返します。
これにより、表範囲の行数が変数「rowCount」に格納されます。
- Range(“A1”).CurrentRegion は、セル「A1」を基点に、そのセルを含むデータの範囲全体(つまり、連続したデータのブロック)を取得します。
- columnCount = Range(“A1”).CurrentRegion.Columns.Count
- Range(“A1”).CurrentRegion でセル「A1」を基点に、そのセルを含むデータの範囲全体を取得します。
「.Columns.Count」は、その取得した範囲の列数を返します。
これにより、表範囲の列数が変数「columnCount」に格納されます。
- Range(“A1”).CurrentRegion でセル「A1」を基点に、そのセルを含むデータの範囲全体を取得します。
- MsgBox “表の行数: ” & rowCount & “、表の列数: ” & columnCount
- MsgBox 関数を使って、取得した表範囲の行数 (rowCount) と列数 (columnCount) をメッセージボックスで表示します。
このメッセージボックスは、ユーザーに表の大きさを簡単に知らせるために使用されます。
- MsgBox 関数を使って、取得した表範囲の行数 (rowCount) と列数 (columnCount) をメッセージボックスで表示します。
- 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
処理結果


コードの動作概要
Range(“B2”).CurrentRegion で、B2セルを基点にデータ範囲全体を取得します。
変数「lastRow」は、CurrentRegion の最初の行に範囲の行数を足して計算します。
これにより、最終行が特定されます。
変数「lastColumn」も同様に、CurrentRegion の最初の列に範囲の列数を足して最終列を特定します。
MsgBox によって、最終行と最終列の番号を表示します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub GetLastRowAndColumn()
- この行は、新しいサブルーチン(Subプロシージャ)「GetLastRowAndColumn」を定義しています。
このサブルーチンは、指定した範囲(CurrentRegion)の最終行と最終列を計算して表示するために使用されます。
- この行は、新しいサブルーチン(Subプロシージャ)「GetLastRowAndColumn」を定義しています。
- Dim lastRow As Long
- この行では、変数「lastRow」を宣言しています。
Long 型のデータ型は、整数を格納するためのもので、この場合は、最終行の行番号を格納します。
- この行では、変数「lastRow」を宣言しています。
- Dim lastColumn As Long
- この行では、変数「lastColumn」を宣言しています。
こちらも Long 型のデータ型で、最終列の列番号を格納します。
- この行では、変数「lastColumn」を宣言しています。
- With Range(“B2”).CurrentRegion
- With ステートメントは、オブジェクトに対して繰り返し操作を行うための構文です。
ここでは、Range(“B2”).CurrentRegionというオブジェクトに対して、一連の操作をまとめて行います。
- With ステートメントは、オブジェクトに対して繰り返し操作を行うための構文です。
- lastRow = .Row + .Rows.Count – 1
- この行では、「最終行」を計算しています。
- .Row
- CurrentRegionの最初の行番号を取得します。
- .Rows.Count
- CurrentRegionの行数を取得します。
- .Row + .Rows.Count – 1
- 最初の行番号に行数を足し、1を引くことで、最終行を計算します。
- lastColumn = .Column + .Columns.Count – 1
- この行では、最終列を計算しています。
- .Column
- CurrentRegionの最初の列番号を取得します。
- .Columns.Count
- CurrentRegionの列数を取得します。
- .Column + .Columns.Count – 1
- 最初の列番号に列数を足し、1を引くことで、最終列を計算します。
- End With
- この行は、Withステートメントの終了を示します。
ここで、Withブロック内の操作が完了したことを意味します。
- この行は、Withステートメントの終了を示します。
- MsgBox “最終行: ” & lastRow & “、最終列: ” & lastColumn
- MsgBox関数を使用して、最終行と最終列の番号をメッセージボックスに表示します。
- “最終行: ” & lastRow
- メッセージボックスに「最終行: 」という文字列と、lastRow(最終行の行番号)を表示します。
- “最終列: ” & lastColumn
- 「最終列: 」という文字列と、lastColumn(最終列の列番号)を表示します。
- End Sub
- この行は、サブルーチン「GetLastRowAndColumn」の終了を示します。
これにより、このサブルーチンが完了し、プログラムは次のステップに進みます。
- この行は、サブルーチン「GetLastRowAndColumn」の終了を示します。
このサブルーチン「GetLastRowAndColumn」は、セル「B2」を基点にCurrentRegionを使用して表全体を取得し、その範囲の最終行と最終列を計算して表示するコードです。
CurrentRegionを使用することで、表のサイズが動的に変わった場合でも常に最新の最終行・最終列を取得できるため、非常に便利です。
使用例3: セルの色を一括で変更する
CurrentRegionを使用して、データが含まれるセル範囲の背景色を変更する方法を紹介します。
主な使用用途 : このコードは、Excelでデータが記述されているセル範囲を簡単に把握したいときに使用します。セルの範囲全体を一目で確認するために、範囲を目立たせる目的で背景色を変更する場合に便利です。
コード例
Sub HighlightCurrentRegion()
Range("B2").CurrentRegion.Interior.Color = vbYellow
End Sub
処理結果


コードの動作概要
基点となるセル「A1」から始まるデータの連続した範囲(表全体)を取得します。
取得した範囲の背景色を黄色(vbYellow)に設定して強調表示します。
このコードで使用している機能
- Interior.Color (セルの色変更)
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub HighlightCurrentRegion()
- この行は、新しいサブルーチン(Subプロシージャ)「HighlightCurrentRegion」を定義しています。
このサブルーチンは、セル範囲を強調表示するために使用されます。
- この行は、新しいサブルーチン(Subプロシージャ)「HighlightCurrentRegion」を定義しています。
- Range(“B2”).CurrentRegion.Interior.Color = vbYellow
- Range(“B2”).CurrentRegion は、セル「A1」を基点に、そのセルを含むデータのセル範囲全体を取得します。
「.Interior.Color」は、その範囲のセルの背景色を設定するプロパティです。
「vbYellow」は、VBAで定義された定数で、「黄色」を表します。
この行により、セル「B2」を含むデータ範囲全体のセルの背景色が黄色に変更され、強調表示されます。
- Range(“B2”).CurrentRegion は、セル「A1」を基点に、そのセルを含むデータのセル範囲全体を取得します。
- End Sub
- この行は、サブルーチンの終了を示しています。
すべての処理が完了すると、このサブルーチンは終了し、プログラムは次のステップに進みます。
- この行は、サブルーチンの終了を示しています。
このコードは、Excelの特定のセルを基点として、そのセルを含むデータ範囲全体を強調表示するための方法をになります。
「CurrentRegion」を使用することで、セルの範囲を自動で取得し、範囲内のすべてのセルを一度に操作することが可能になります。
データの視認性を高めるため、特に大きなデータセットや複数の表があるシートで役立ちます。
使用例4: すべてのデータを一括にクリア(削除)する
CurrentRegionを使用してセル範囲を自動取得、その範囲内のすべてのデータをクリア(削除)する方法を紹介します。
主な使用用途 : このコードは、表のデータをすべて削除したい場合に使用します。特定の範囲内のセルの内容だけをクリアし、セルの書式や境界線などはそのままにしておきたいときに便利です。
コード例
Sub ClearCurrentRegion()
Range("B2").CurrentRegion.ClearContents
End Sub
処理結果


コードの動作概要
セル「B2」を基点とするデータの範囲(表全体)を取得します。
取得した範囲内のセルの内容(値と数式)をすべてクリアします。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub ClearCurrentRegion()
- この行は、新しいサブルーチン(Subプロシージャ)「ClearCurrentRegion」を定義しています。
このサブルーチンは、指定した範囲内のデータを削除するために使用されます。
- この行は、新しいサブルーチン(Subプロシージャ)「ClearCurrentRegion」を定義しています。
- Range(“B2”).CurrentRegion.ClearContents
- Range(“B2”).CurrentRegion は、セル「B2」を基点に、そのセルを含むデータのセル範囲全体を取得します。
「.ClearContents」は、取得した範囲のセルの内容(値や数式)をすべてクリア(削除)するメソッドです。
ただし、セルの書式設定や枠線などはそのまま残ります。
この行によって、セル「B2」を基点とする連続したデータ範囲全体の内容がすべてクリアされます。
- Range(“B2”).CurrentRegion は、セル「B2」を基点に、そのセルを含むデータのセル範囲全体を取得します。
- 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
処理結果


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


コードの動作概要
データを格納するための2次元配列「dataArr」を Variant 型で宣言します。
Variant 型は、配列を含む任意のデータ型を格納できるため、柔軟なデータ操作が可能です。
Range(“B2”).CurrentRegion.Value を使用して、セル「B2」を基点にして、そのセルを含む連続したデータ範囲を自動的に取得し、2次元配列「dataArr」に格納します。
- Debug.Print dataArr(1, 1) は、配列の一部(ここでは最初の行と列のデータ)を表示し、データが正常に格納されているかを確認します。
「Stop ステートメント」により、コードの実行が一時停止され、ローカルウィンドウで配列の内容を調べることができます。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub StoreDataInArray()
- 新しいサブルーチン「StoreDataInArray」を定義しています。
このサブルーチンは、指定されたセル範囲のデータを2次元配列に格納します。
- 新しいサブルーチン「StoreDataInArray」を定義しています。
- Dim dataArr As Variant
- Variant 型の変数「dataArr」を宣言しています。
Variant 型を使用することで、様々なデータ型のデータを一つの変数に格納することができます。
この場合、2次元配列を格納します。
- Variant 型の変数「dataArr」を宣言しています。
- dataArr = Range(“B2”).CurrentRegion.Value
- Range(“B2”).CurrentRegion は、セル “B2” を基点にして、そのセルを含む連続したセル範囲を取得します。
「.Value プロパティ」を使うことで、この範囲内の全てのセルの値を2次元配列として「dataArr」に格納します。
- Range(“B2”).CurrentRegion は、セル “B2” を基点にして、そのセルを含む連続したセル範囲を取得します。
- Debug.Print dataArr(1, 1)
- 「Debug.Print」は、VBAのデバッグ用の出力コマンドで、イミディエイトウィンドウ(Ctrl + Gで開く)に値を表示します。
「dataArr(1, 1)」 は、配列「dataArr」の最初の行と列のデータを表示します。
- 「Debug.Print」は、VBAのデバッグ用の出力コマンドで、イミディエイトウィンドウ(Ctrl + Gで開く)に値を表示します。
- Stop
- コードの実行を一時停止するコマンドです。
これにより、ローカルウィンドウで変数の値を調査できます。
デバッグ時に役立ちます。
- コードの実行を一時停止するコマンドです。
- End Sub
- この行は、サブルーチンの終了を示しています。
すべての処理が完了すると、このサブルーチンは終了し、プログラムは次のステップに進みます。
- この行は、サブルーチンの終了を示しています。
このコードを使えば、Excelのシートから動的にデータを取得して、効率的に操作できます。
特に、データの大きさが変わる場合でも、「CurrentRegion」を使うことで範囲を自動で取得し、常に最新のデータを操作することが可能です。
複数の操作を行う際には、この2次元配列を使って、例えばデータの並び替えやフィルタリングなどの高度な操作を行うことができます。
この記事のまとめ
「CurrentRegionプロパティ」は、Excel VBAで表のセル範囲を自動的に取得し、さまざまな操作を簡単に行うために非常に便利なツールです。
これにより、データの追加や削除にも動的に対応できるため、手動で範囲を設定する必要がなくなり、効率的な作業が可能になります。
ポイントのおさらい
- CurrentRegionプロパティを使って、表のデータ範囲を自動で取得する方法を理解する
- 「CurrentRegionプロパティ」は、指定したセルを基点に、その周囲のデータがある範囲(空白のセルで囲まれた範囲)を自動的に取得するプロパティです。
⇒ 「VBAの「CurrentRegionプロパティ」とは?」もう一度見る。
- 「CurrentRegionプロパティ」は、指定したセルを基点に、その周囲のデータがある範囲(空白のセルで囲まれた範囲)を自動的に取得するプロパティです。
- CurrentRegionプロパティがよく使われる場面を理解する
- 「CurrentRegionプロパティ」は、データの削除、配列の格納、フィルタリング、ソート、データのコピー、集計処理などでよく使われます。
⇒ 「CurrentRegionがよく使われる事例」もう一度見る。
- 「CurrentRegionプロパティ」は、データの削除、配列の格納、フィルタリング、ソート、データのコピー、集計処理などでよく使われます。
- CurrentRegionプロパティを使う際の注意ポイントを理解する
- 「CurrentRegionプロパティ」を使用する際、意図しない範囲の取得を防ぐために、空白セルや複数のデータブロックに対する理解と対策が必要です。
⇒ 「CurrentRegionを使う際の注意ポイント」もう一度見る。
- 「CurrentRegionプロパティ」を使用する際、意図しない範囲の取得を防ぐために、空白セルや複数のデータブロックに対する理解と対策が必要です。
- CurrentRegionプロパティの使用例を確認し、実践的に利用する方法を学ぶ
- 「CurrentRegionプロパティ」を使用したさまざまな操作例(データの取得、強調表示、クリア、配列への格納)を通じて、実践的な利用方法を学びます。
⇒ 「「CurrentRegionプロパティ」の使用例をご紹介」もう一度見る。
- 「CurrentRegionプロパティ」を使用したさまざまな操作例(データの取得、強調表示、クリア、配列への格納)を通じて、実践的な利用方法を学びます。
この記事の使用例を実践することで、VBAの「CurrentRegionプロパティ」を使いこなせるようになります。
この記事が役に立ったと思った方は、ぜひサイトマップから違う記事も参照ください。

