こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA 最終行列の取得(空白混み)

VBA 最終行列の取得(空白混み)

例えば以下のような場合正しくカウントするにはどの様にしたら良いでしょうか

□→空白セル ■→データあり

□ABCDEFGH
1□□□□□□□□
2■■■■■■■■
3■■■■■■■■
4■■■■■■■■
5□□□□□□□□
6■■■■■■■■

期待する戻り値
maxRow→6 maxColumn→8

行は最終行から特定可能ですが
その方法だと列は1か0を返してくると思います。

最大値を求める手法はどんな物が考えられるでしょうか

投稿日時 - 2018-05-15 18:46:53

QNo.9498739

困ってます

質問者が選んだベストアンサー

Activeは余計でしたね、
Cells.SpecialCells(xlLastCell).Row
Cells.SpecialCells(xlLastCell).Column

投稿日時 - 2018-05-15 19:25:47

お礼

御回答有難う御座いました。
期待する値がちゃんと取れました。

投稿日時 - 2018-05-16 10:19:20

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

私は
Sub test01()
lr = Range("A1048576").End(xlUp).Row
MsgBox lr
rc = Range("XFD2").End(xlToLeft).Column
MsgBox rc
End Sub
でやってます。
欠点もありますが、ほとんどの場合有効でしょう。
範囲の底や右辺列が、凸凹の場合は、どうするか。
全列や全行について上記をやって、最大値を採るか。
具体的な数字を使うのが野暮ったいなら
Sub test02()
MsgBox Rows.Count
MsgBox Columns.Count
End Sub
を使って
Sub test03()
MsgBox Range("A" & Rows.Count).End(xlUp).Row
MsgBox Cells(2, Columns.Count).End(xlToLeft).Column
End Sub
ーー
普通はエクセルの表はCurrentRegionで捉えられるもの(行・列を)使うことを予想しているように想像する。

投稿日時 - 2018-05-15 22:15:10

お礼

御回答有難う御座います。
質問文にもありますが、最終行から特定する方法だと
その凹凸や1行目が空白だった場合に対応出来ないと思います。
また例は例であって今回のデータが毎回1行目空白と言う訳ではなく、
1列目がMAX値よりも足りない事も想定されます。
全要素数を確認するのも考えましたが1万行くる可能性もあったので
他に手法が無いか質問した次第です。

投稿日時 - 2018-05-16 10:17:23

ANo.1

シート上でCtrl+Endをやってみてください。
使用範囲の右下が選択されます。
同じことをVBAでやると最終行と列はこうなります。

ActiveCell.SpecialCells(xlLastCell).Row
ActiveCell.SpecialCells(xlLastCell).Column

投稿日時 - 2018-05-15 19:21:31