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

【VBA】Countプロパティで行数と列数を取得します

この記事では、VBA の Countプロパティを使ってセル範囲の行と列を数える方法を解説します。

【VBA】Countプロパティ

VBA で特定のセル範囲の行数を数えるときは Range.Rows.Count で、列数を数える ときは Range.Columns.Count で数えます。試しにセル B2:D8 を選択して行と列を数えるマクロを書いてみましょう。

'[VBA] セル範囲を選択して行数と列数を数えるマクロ

Sub Count_Rows_Columns_1()

  '行数と列数を入れる変数を宣言
  Dim ctr As Integer
  Dim ctc As Integer

  'セル範囲を選択
  Range("B2:D8").Select

  'セル範囲の行数と列数を数える
  ctr = Selection.Rows.Count
  ctc = Selection.Columns.Count

  '数え終わったらメッセージボックスに表示
  MsgBox "選択されたセル範囲は" & ctr & "行" & ctc & "列" & "です"

End Sub

Count_Rows_Columns_1()を ぽちっと実行してみると、メッセージボックスに行数と列数が表示されます。
 
RowsプロパティとColumnsプロパティでセル範囲の行と列を数える

今回、注目するコードはここです。
金八先生ふうに言うと「は~い。ちゅうも~く!」です。
別に金八先生ふうに言わなくてもいいけどね。

ctr = Selection.Rows.Count

Selectionプロパティで取得した Rangeオブジェクトから、Rowsプロパティで選択範囲の行を参照して、Countプロパティでその数をかぞえて、変数 ctr に放り込んでいます。その次のコード

ctc = Selection.Columns.Count

では選択範囲の列を数えています。Rows も Columns も頻繁に使うプロパティなので使い方をしっかり覚えてね。
 
次はワークシートにデータベースがあって、その行数と列数を数えるマクロです。データは何でもいいんだけど、すぐに用意できない人は次のデータをコピーして B2 セルに張り付けてくださいな。

書籍名 著者 出版社
「さくらんぼ戦場」 旗根史穏 夕暮舎
「ふしぎな人間」 藥師雄大 中学教育出版
「魅惑の漫画」 小寺山文健 夏風社
「手作り心理学」 宮前伸吏 黒石館
「女が何だっていうの?」 三沢卓平 山海新社
「日本のタイガーマスク」 西ノ薗顕三 春夏社
「夕暮れ自伝」 三沼隆洸 早川ブック
「気まぐれふるさと」 古崎雅継 大和舎

アクティブなセル範囲の行数と列数を表示するプロシージャを書いてみました。

'[VBA] アクティブセル領域の行数と列数を表示するマクロ

Sub Count_Rows_Columns_2()

  Dim ctr As Integer
  Dim ctc As Integer
  Dim mystr As String
  Dim myrange As Range

  mystr = "選択されたデータの大きさは"

  'オブジェクト変数 myrange にセル範囲を放り込む
  Set myrange = Range("B2").CurrentRegion

  'セル範囲の行数と列数を数える
  ctr = myrange.Rows.Count
  ctc = myrange.Columns.Count

  '数え終わったらメッセージボックスに表示
  MsgBox mystr & ctr & "行" & ctc & "列" & "です"

End Sub

Count_Rows_Columns_2() を実行すると、現在アクティブな状態にあるセル範囲の行数と列数が表示されます。
 

 
今度はこのコードが「は~い。ちゅうも~く!」なのです。

Set myrange = Range("B2").CurrentRegion

セル B2 を含むアクティブセル領域(データが入力されている範囲)を myrange というオブジェクト変数にぽいと放り込んでいます。オブジェクトを変数に入れるときは頭に Setステートメントが必要ですよ。これって意外に忘れがちなのです。こばとも初心者の頃に Set を忘れてて、
「このマクロ動かないじゃん!? VBAって欠陥言語じゃん!?」
と一人で勝手にキレていました。皆さんも逆ギレしないように、ちゃんと Set をつけてくださいな。え? そんなことでキレるのはこばとだけ? そうですかね。

コメント

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

    【AI解説】VBAのCountプロパティ

    生徒:こんにちは先生!VBAのCountプロパティについて教えていただけますか?
     
    先生:もちろんです!Countプロパティは、VBAでコレクション内の要素の数を数えるために使用されます。どのようなコレクションでCountプロパティを使用したいですか?
     
    生徒:たとえば、ワークシート内のセル範囲に含まれるセルの数を数えたいです。
     
    先生:それなら、Countプロパティを使用してセル範囲内のセルの数を数えることができます。具体的なコードを見てみましょう。

    Sub CountCells()
        Dim rng As Range
        Set rng = Range("A1:B5")  ' カウントしたいセル範囲を指定します
        Dim cellCount As Long
        cellCount = rng.Cells.Count
        MsgBox "セルの数: " & cellCount
    End Sub

    生徒:なるほど、rng.Cells.Countでセルの数が取得できるんですね!それでは、このコードを実行するとどうなりますか?
     
    先生:このコードを実行すると、指定したセル範囲内のセルの数がメッセージボックスに表示されます。セル範囲を”A1:B5″と指定していますので、この範囲内のセルの数が表示されるでしょう。
     
    生徒:分かりました!ところで、Countプロパティは他のコレクションでも使えますか?
     
    先生:はい、Countプロパティはさまざまなコレクションに対して使用することができます。たとえば、ワークシートの列や行、配列など、様々な要素の数を数えることができます。
     
    生徒:なるほど、便利ですね!それから、もしセル範囲に空白のセルがあった場合、Countプロパティはそれらも数えるのでしょうか?
     
    先生:はい、Countプロパティはセル範囲内のすべてのセルを数えるため、空白のセルも含まれます。ですので、空白のセルも数えたい場合には便利ですが、空白のセルを数えたくない場合は別の方法を使う必要があります。
     
    生徒:なるほど、その点に気をつけます!Countプロパティの使い方が分かりました。ありがとうございました!
     
    先生:どういたしまして!CountプロパティはVBAで要素の数を数える際に便利なプロパティですので、ぜひ活用してください。他にも何か質問があれば遠慮なく聞いてくださいね!