Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » VBAで選択されている列数・行数を取得する

VBAで選択されている列数・行数を取得する

対象:Excel 2010, Excel 2013, Windows版Excel 2016

「エクセル マクロ 選択行数」
「excel マクル 選択したセルの行数」
「excel vba 選択された行数を返す」
といった検索でインストラクターのネタ帳へのアクセスが時折あります。

選択されている行数を取得するExcel VBAのコードを探していた方による検索です。

[スポンサードリンク]

似たような
「選択範囲の列数 vba」
「エクセル vba 列数 取得 選択エリアの」
という検索でのアクセスもあります。

こちらは選択されている列数を取得するコードを探していらしたのでしょう。

選択中セル範囲の行数を取得するサンプルマクロ

以下のSubプロシージャを実行すると、選択されているセル範囲の行数がメッセージボックスに表示されます。
Sub 選択されている行数を取得する()
 MsgBox Selection.Rows.Count
End Sub

上記のSubプロシージャで利用している、オブジェクトを取得・操作するコード(オブジェクト式)の意味は、下図のとおりです。

VBAで選択されている列数・行数を取得する

Rows.Countとの違い

拙著『いちばんやさしいExcel VBAの教本』では、以下のLesson(節)に「Rows.Count」というコードが登場します。

  • Lesson 63 行全体・列全体を表すRangeオブジェクトについて学習しましょう
  • Lesson 65 終端セルを取得するコードの問題を解決しましょう
  • Lesson 72 複数シートを1枚にまとめるマクロを作成しましょう

この「Rows.Count」の「Rows」の前には、オブジェクトを取得するコードが何も書かれていないので、グローバルメンバーのRowsプオロパティで、

VBAで選択されている列数・行数を取得する

実行するとアクティブなワークシートの全行数を取得できます。

これに対して上記のコード「Selection.Rows」は、「.Rows」の前に選択されているセル範囲を表すRangeオブジェクトを返す「Selection」が書かれているので、RangeオブジェクトのRowsプロパティです。

VBAで選択されている列数・行数を取得する

例えば、A1:C5セルが選択されているときに「Selection.Rows」は「Range("A1:C5").Rows」と結果的に同じ意味になり、「Selection.Rows.Count」は「Range("A1:C5").Rows.Count」と同じであり、「5」が取得できます。

選択中セル範囲の列数を取得するサンプルマクロ

選択されているセル範囲の列数を取得する場合は、以下のようなオブジェクト式です。
Sub 選択されている列数を取得する()
 MsgBox Selection.Columns.Count
End Sub

上記のSubプロシージャで利用している、オブジェクトを取得する式の意味は、下図のとおりです。

VBAで選択されている列数・行数を取得する

先ほどの行数取得ではRowsプロパティを使っていたのに対し、列ですからColumnsプロパティを使っている点だけが異なります。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » 行・列を表すRange » VBAで選択されている列数・行数を取得する

「行・列を表すRange」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.