「vba currentregion 列数」
「currentregion 列をカウント」
といった検索キーワードでのアクセスが時折あります。
CurrentRegionの列数を取得するサンプルマクロ
結論からいえば以下のようなコードで、CurrentRegionの列数を取得できます。
Dim cnt As Long
cnt = ActiveCell.CurrentRegion.Columns.Count
MsgBox cnt
End Sub
ActiveCell.CurrentRegion.Columns.Countの意味
コードとしては上記のとおりですが、自分でExcelマクロを作れるようになりたい方は、「ActiveCell.CurrentRegion.Columns.Count」の意味を確認しておきましょう。
拙著『いちばんやさしいExcel VBAの教本』の、Lesson 52等でプロパティは2種類あることをお伝えしています。
今回の「ActiveCell.CurrentRegion.Columns.Count」では、最後のCountだけが単なるデータを取得するためのプロパティで、他のActiveCell・CurrentRegion・ColumnsはいずれもRangeオブジェクトを取得するためのプロパティです。
ActiveCellの返すRange
具体例を見ましょう。
下図のような状況のとき、
ActiveCellプロパティは、B2セルを表すRangeオブジェクトを返します。
Range.CurrentRegionの返すRange
つづくRangeオブジェクトのCurrentRegionプロパティは、B2:D5セルを表すRangeオブジェクトを返します。
CurrentRegionをご存知の方は、ここはOKでしょう。
Range.Columnsの返すRange
そのあとの、RangeオブジェクトのColumnsプロパティは、B2:B5・C2:C5・D2:D5セルを単独のオブジェクトとして持つ、列を表すRangeオブジェクトを返します。
「vba currentregion 列数」
「currentregion 列をカウント」
と検索なさった方にとって、ここがもっとも難易度の高い箇所でしょうが、
ActiveCell.CurrentRegion.Columns
で、上図のような列を表すRangeオブジェクトが返されることを、イメージしましょう。
Range.Countの返す数
最後に、RangeオブジェクトのCountプロパティで、列の数を取得しています。
列を表すRangeオブジェクトを取得するColumnsプロパティ
拙著の「Lesson 63 行全体・列全体を表すRangeオブジェクトについて学習しましょう」の中で、
Columns.Countで列数を取得できることをご紹介しています。
ColumnsプロパティはRangeオブジェクトにも用意されているので、「Columns.Count」の前には、Rangeオブジェクトを取得するコードを書くことができ、この場合そのRangeオブジェクトの表すセル範囲の列数を取得できます。
今回ご紹介した「ActiveCell.CurrentRegion.Columns.Count」が、「Columns.Count」の前にRangeオブジェクトを取得するコードを書いた例です。
最終更新日時:2018-09-12 20:53
- Newer:COUNTIF関数で昨日のデータだけをカウントする
- Older:〇〇以上かつ◎◎以下のときに行の書式を自動的に変更する
Home » Excel VBA Rangeオブジェクト » CurrentRegionプロパティ » CurrentRegionの列数を取得する-.Columns.Count