この記事では、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()を ぽちっと実行してみると、メッセージボックスに行数と列数が表示されます。
今回、注目するコードはここです。
金八先生ふうに言うと「は~い。ちゅうも~く!」です。
別に金八先生ふうに言わなくてもいいけどね。
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 をつけてくださいな。え? そんなことでキレるのはこばとだけ? そうですかね。
コメント
【AI解説】VBAのCountプロパティ
生徒:こんにちは先生!VBAのCountプロパティについて教えていただけますか?
先生:もちろんです!Countプロパティは、VBAでコレクション内の要素の数を数えるために使用されます。どのようなコレクションでCountプロパティを使用したいですか?
生徒:たとえば、ワークシート内のセル範囲に含まれるセルの数を数えたいです。
先生:それなら、Countプロパティを使用してセル範囲内のセルの数を数えることができます。具体的なコードを見てみましょう。
生徒:なるほど、rng.Cells.Countでセルの数が取得できるんですね!それでは、このコードを実行するとどうなりますか?
先生:このコードを実行すると、指定したセル範囲内のセルの数がメッセージボックスに表示されます。セル範囲を”A1:B5″と指定していますので、この範囲内のセルの数が表示されるでしょう。
生徒:分かりました!ところで、Countプロパティは他のコレクションでも使えますか?
先生:はい、Countプロパティはさまざまなコレクションに対して使用することができます。たとえば、ワークシートの列や行、配列など、様々な要素の数を数えることができます。
生徒:なるほど、便利ですね!それから、もしセル範囲に空白のセルがあった場合、Countプロパティはそれらも数えるのでしょうか?
先生:はい、Countプロパティはセル範囲内のすべてのセルを数えるため、空白のセルも含まれます。ですので、空白のセルも数えたい場合には便利ですが、空白のセルを数えたくない場合は別の方法を使う必要があります。
生徒:なるほど、その点に気をつけます!Countプロパティの使い方が分かりました。ありがとうございました!
先生:どういたしまして!CountプロパティはVBAで要素の数を数える際に便利なプロパティですので、ぜひ活用してください。他にも何か質問があれば遠慮なく聞いてくださいね!