ページ

2012年6月18日月曜日

◆Excel 選択された行数をカウントする(非連続選択対応)

Excel VBA

通常、選択行は「Range」オブジェクトの「Rows.Count」とかで簡単に取れる。
しかし、これが「Ctrl」を使って非連続行を選択したりするとうまくいかない。

「Rows.Count」は最初の選択行(連続した部分)の行数が返ってくるようだ。

選択された全行を取得するにはどうするのか。
調べてみたが意外とこれが見つからない。

さすがに世界を代表するソフトだけあってExcelの問題はネットを探せば簡単に解決策が見つかるものだが、不思議と問題にしている人さえほとんど見かけない。
(もしかすると根本的にやり方が間違っているのかも・・・)

ネットで回答が見つからなかったので自分なりに力技で求めてみた。

選択部分は「Selection.Areas」で塊ごとの「Range」オブジェクトが返ってくるようだ。
だとすればあとはそれぞれの行数をカウントして足すだけ。

RowCount = 0
For Each Rng In Selection.Areas
    RowCount = RowCount + Rng.Rows.Count
Next
MsgBox (RowCount)

もっとダイレクトな方法があってもよさそうだが、とりあえず良しとする。

0 件のコメント:

コメントを投稿

私が最近チェックした記事