『Excel VBA 表計算とプログラミング学習サイト』では、アフィリエイトプログラムを利用して商品を紹介しています。

【VBA】CurrentRegionでアクティブセル領域を参照します

この記事では、VBA の CurrentRegionプロパティを使って、特定範囲のデータの登録件数を調べる方法について解説します。今回は下のデータを使うので、コピーしてシートの B2 セルにぺったんこと貼り付けてください。ちなみに下の書籍データはこばとの「タイトルクリエーター」というソフトで作った架空のものなので、Amazon で探しても見つかりませんよ。念のため。

書籍名 著者 出版社
「頭の中のたまご」 棘成央 ルビー社
「狂ったシベリア」 新遙平 黒石公論社
「心の要塞」 獺越清大 ハスキー
「モナコで春夏秋冬」 惠良田喬樹 山岡書店
「人間の民主化」 平子田喜翔 旧時代社
「カントリーをめぐる旅」 裏村高之 悲壮社
「愉しい温泉宿」 袋谷剛充 隅川マーケティング
「猫たちの王国」 宗野慎弥 エメラルド社

【VBA】CurrentRegion プロパティ

さて、上のデータを B2 セルに貼りつけると図のように周りを空白セルで囲まれすね。このようなデータ範囲のことを アクティブセル領域 といって、VBA はひとかたまりのモノ、つまり一つのオブジェクトとして認識してくれます。
 
アクティブセル領域は空白セルに囲まれた部分です
 
このアクティブセル領域を参照するには CurrentRegionプロパティを使ってこんなふうに書きますよ。

'[VBA] セルC6を含むアクティブセル領域を選択します
Sub ActiveRange_1()
  Range("C6").CurrentRegion.Select
End Sub

ActiveRange_1() を実行してみると、ちゃんとデータ範囲が選択されます。
 
CurrentRegionプロパティでアクティブセル領域を選択
 
上のマクロでは Range(“C6”) としているけど、ここは Range(“B2”) でも Range(“D9”) でも、そのセルがデータ範囲に含まれてさえいれば何でもかまいません。好きなセルを書いておいてくださいな。

登録データ件数を表示します

それでは、CurrentRegionプロパティを使って見出しを除いた登録データ件数をセル C12 に表示させてみましょう。こんなふうに書きます。

'[VBA] 見出しを除いたデータ件数を数えます
Sub ActiveRange_2()
  Range("C12").Value = Range("C6").CurrentRegion.Rows.Count - 1
End Sub

アクティブセル領域の行数を得て、見出しの 1 行ぶんだけを引いています。ActiveRange_2() を実行してみると …
 
CurrentRegionプロパティで登録データ件数を表示

こんなふうに登録データ件数が表示されます。大きなデータを扱うときは、このマクロを用意しておくと便利です。あ、そうそう、書籍データの一番最初にある「頭の中のたまご」って、どんな内容なのか気になりませんか? 架空の本だから、そんなこと考えても仕方ないかもしれないけど、もし作家さんに「このタイトルで本を書いてくださいな」て頼んだら、どんなお話になるんでしょうね。皆さんも何か面白い物語を思いついたらコメントで教えてね。とりあえず今回はこのへんで。また次回お会いしましょう。
 
≫ VBA で罫線を引く方法

コメント

  1. あとりえこばと より:

    【AI解説】VBAのCurrentRegionプロパティ
     
    生徒: こんにちは先生!VBAのCurrentRegionプロパティについて教えていただけますか?
     
    先生:もちろんです!CurrentRegionプロパティは、セルを基準として連続した範囲を選択するために使用されます。どのような状況でCurrentRegionプロパティを使いたいですか?
     
    生徒:たとえば、特定のセルを基準にして、それに隣接する連続した範囲を選択したいです。
     
    先生:それなら、CurrentRegionプロパティを使用して目的の範囲を選択することができます。具体的なコードを見てみましょう。

    Sub SelectRegion()
        Dim rng As Range
        Set rng = Range("A1")  ' 基準となるセルを指定します
        rng.CurrentRegion.Select
    End Sub

    生徒:なるほど、rng.CurrentRegionで連続した範囲が選択されるんですね!それでは、このコードを実行するとどうなりますか?
     
    先生:このコードを実行すると、指定した基準セルを中心にして、隣接する連続した範囲が選択されます。基準セルを”A1″と指定していますので、そのセルを中心にした範囲が選択されるでしょう。
     
    生徒:分かりました!ところで、CurrentRegionプロパティはセル範囲だけでなく、テーブルやデータベースなど他の要素に対しても使えますか?
     
    先生: はい、CurrentRegionプロパティはセル範囲以外にも使うことができます。たとえば、テーブルやデータベースのデータが格納された範囲を選択することもできます。

    生徒:なるほど、便利ですね!それから、もし基準セルから連続した範囲に空白のセルがあった場合、CurrentRegionプロパティはそれらを含めて選択するのでしょうか?
     
    先生: はい、CurrentRegionプロパティは基準セルから連続した範囲を選択するため、空白のセルも含まれます。ですので、基準セルを中心にした連続した範囲を選択したい場合に便利ですが、空白のセルを含めたくない場合は別の方法を使う必要があります。