この記事では、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 をつけてくださいな。え? そんなことでキレるのはこばとだけ? そうですかね。
コメント