「エクセル マクロ 選択行数」
「excel マクル 選択したセルの行数」
「excel vba 選択された行数を返す」
といった検索でインストラクターのネタ帳へのアクセスが時折あります。
選択されている行数を取得するExcel VBAのコードを探していた方による検索です。
似たような
「選択範囲の列数 vba」
「エクセル vba 列数 取得 選択エリアの」
という検索でのアクセスもあります。
こちらは選択されている列数を取得するコードを探していらしたのでしょう。
選択中セル範囲の行数を取得するサンプルマクロ
以下のSubプロシージャを実行すると、選択されているセル範囲の行数がメッセージボックスに表示されます。MsgBox Selection.Rows.Count
End Sub
上記のSubプロシージャで利用している、オブジェクトを取得・操作するコード(オブジェクト式)の意味は、下図のとおりです。
Rows.Countとの違い
拙著『いちばんやさしいExcel VBAの教本』では、以下のLesson(節)に「Rows.Count」というコードが登場します。
- Lesson 63 行全体・列全体を表すRangeオブジェクトについて学習しましょう
- Lesson 65 終端セルを取得するコードの問題を解決しましょう
- Lesson 72 複数シートを1枚にまとめるマクロを作成しましょう
この「Rows.Count」の「Rows」の前には、オブジェクトを取得するコードが何も書かれていないので、グローバルメンバーのRowsプオロパティで、
実行するとアクティブなワークシートの全行数を取得できます。
これに対して上記のコード「Selection.Rows」は、「.Rows」の前に選択されているセル範囲を表すRangeオブジェクトを返す「Selection」が書かれているので、RangeオブジェクトのRowsプロパティです。
例えば、A1:C5セルが選択されているときに「Selection.Rows」は「Range("A1:C5").Rows」と結果的に同じ意味になり、「Selection.Rows.Count」は「Range("A1:C5").Rows.Count」と同じであり、「5」が取得できます。
選択中セル範囲の列数を取得するサンプルマクロ
選択されているセル範囲の列数を取得する場合は、以下のようなオブジェクト式です。MsgBox Selection.Columns.Count
End Sub
上記のSubプロシージャで利用している、オブジェクトを取得する式の意味は、下図のとおりです。
先ほどの行数取得ではRowsプロパティを使っていたのに対し、列ですからColumnsプロパティを使っている点だけが異なります。
- Newer:ByRef・参照渡しとはどう使うのか
- Older:VBA経験者はChapter 8「オブジェクト関連の文法を学ぼう」を
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » VBAで選択されている列数・行数を取得する