VBA CurrentRegion(連続したセル領域)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 6月 8, 2022

このチュートリアルでは、VBAでCurrentRegionを使用する方法について説明します。

VBAのCurrentRegionプロパティは、作業したい範囲内に含まれるすべてのセルを選択する方法です。範囲内のセルがすべて連続しているか、または互いに「接触(空白セルを挟まずに隣接)」している限り、CurrentRegionはその領域内のすべてのセルを選択します。

CurrentRegionの構文

構文は非常にシンプルです。

Range("E11").CurrentRegion.Select

ここで、現在の領域を選択したいセルを指定し、CurrentRegion.Selectプロパティを使用して、セルの領域を選択します。

現在の領域を取得する

次のようなワークシートを考えてみましょう。

vba current region database 1

以下のサブプロシージャは、データベース内のすべてのセルを選択します。

Sub FindCurrentRegion()
   Dim rng As Range
'オブジェクト変数rngをセルE11に設定
   Set rng = Range("E11")
'現在のリージョンを選択する
   rng.CurrentRegion.Select
End Sub

このルーチンを実行すると、セルE11のCurrentRegionにあるすべてのセルが選択されます。

vba current region database 2

隣接するセルの内容を削除して、このルーチンを再実行すると、選択されるCurrentRegionは、次のようになります。

vba current region database 3

そして、さらにデータを削除していくと、セルE11を起点としたCurrentRegionは、以下のようになります。

vba current region database 4

このときD13に何らかの情報を入れると、CurrentRegionは、以下のようになります。

vba current region database 5

つまり、CurrentRegionとは、指定したセル領域を取り囲む、連続した列と行の最小の組み合わせで定義される別のRangeオブジェクトということになります。

CurrentRegion内の行と列のカウント

CurrentRegionを使用して、行と列を数えることができます。

Sub FindCurrentRegion()
   Dim rng As Range
   Dim iRw As Integer
   Dim iCol As Integer
'セル範囲を設定する
   Set rng = Range("E11")
'行をカウントする
   iRw = rng.CurrentRegion.Rows.Count
'列のカウント
   iCol = rng.CurrentRegion.Columns.Count
'結果をメッセージボックスに表示する
   MsgBox ("CurrentRegionには " & iRw & " 行と " & iCol & " 列があります。")
End Sub

このプロシージャを実行すると、以下のようなメッセージボックスが表示されます。

vba current region database countrows

CurrentRegionをクリアする

CurrentRegionプロパティを利用して、セルの範囲をクリアすることもできます。

Sub ClearCurrentRegion()
   Dim rng As Range
'範囲を設定する
   Set rng = Range("E11")
   rng.CurrentRegion.Clear
End Sub

CurrentRegionを変数に代入する

現在のCurrentRegion全体を範囲変数に代入し、その範囲変数を使ってセルの書式設定やセルの並べ替えなどの操作を行うこともできます。

Sub AssignCurrentRegionToVariable()
   Dim rng As Range
'範囲をE11のCurrentRegionに設定する
   Set rng = Range("E11").CurrentRegion
'背景と文字に色をつける
   rng.Interior.Pattern = xlSolid
   rng.Interior.Color = 65535
   rng.Font.Bold = True
   rng.Font.Color = -16776961
End Sub

上記のプロシージャを実行すると、以下のようなワークシートが出来上がります!

vba current region format

CurrentRegionの開始セルと終了セルを取得する

もう少し複雑なコードを使えば、CurrentRegionの最初のセルと最後のセルを取得することもできます。

Sub GetStartAndEndCells()
   Dim rng As Range
   Dim iRw As Integer
   Dim iCol As Integer
   Dim iColStart, iColEnd, iRwStart, iRwEnd As String
'Range変数をE11を含むCurrentRegionに設定する
   Set rng = Range("E11").CurrentRegion
'範囲の開始列を設定する
   iColStart = rng.Column
'範囲の終了列を取得する
   iColEnd = iColStart + (rng.Columns.Count - 1)
'範囲の開始行を取得する
   iRwStart = rng.Row
'範囲の終了行を取得する
   iRwEnd = iRwStart + (rng.Rows.Count - 1)
'開始行と終了列のアドレスをメッセージボックスに表示する
   MsgBox ("範囲の開始位置は " & Cells(iRwStart, iColStart).Address & " で、終了位置は " & Cells(iRwEnd, iColEnd).Address & " です。")
End Sub

上記のコードを実行すると、次のようなメッセージボックスが表示されます。

vba current region database firstcell 開始 終了

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples