アプリ版:「スタンプのみでお礼する」機能のリリースについて

たとえば、B列にとびとびに(不規則に)データが入力されているとします。
そのとき、最下行のデータが入力されている位置を取得するにはどう記述すればいいのでしょうか。
VBAマクロをご存じのかた、ご教示ください。

A 回答 (4件)

実用的には、


行数の場合は、キー項目がある列(複数ある場合はそれ毎に取得するケースも)、
列数の場合は、見出しのある行:1、を使って以下のようにする。
このポイントは、必ずRows.Count、Columns.Count、を使うこと。EXCELのバージョンによりその上限値は異なっているからである。
勝手にマジックナンバを使っていては、保守性、互換性の良いコードは作れない。それが公開の場で繰り返し使われている場合は、そこには悪意が込められている、と思わざるを得ない。ついでに、小文字のサンプルコードにもご注意を、、、
最終行:Cells(Rows.Count, "A").End(xlUp).Row
最終列:Cells(1, Columns.Count).End(xlToLeft).Column

No.8 ワークシートの最終行、最終列を取得する
2007/03/05
http://www.niji.or.jp/home/toru/notes/8.html
    • good
    • 0
この回答へのお礼

ありがとうございました。
私ははじめてのマクロなので、オブジェクトなどの意味もよくわからずに
苦労しております。
いま、適切な解説書を探しています。

お礼日時:2013/02/14 12:29

マメ知識的に



  Range("B1").SpecialCells(xlCellTypeLastCell).Row

これでも取れますよ。

ただし、「使用した領域の最終行」を取るので、
例えばB列よりC列の方がデータが多かったら、
C列の最終行を返してきます。
そこが「使えるか否か」の境目です。


なので私も

  Cells(Rows.Count, 2).End(xlUp).Row

をオススメします。
    • good
    • 0

例えばA列での最終行i は



i = Cells(Rows.Count, "A").End(xlUp).Row
    • good
    • 0

シートの十分に下のセルからCtrl+↑で上向きにジャンプする、という動作をマクロで行います。



dim h as range
set h = range("B65536").end(xlup)

あるいは
dim lastrow as long
lastrow = range("B65536").end(xlup).row

この回答への補足

早速のご回答、ありがとうございます。

私の発想とはまったく逆の発想なのに驚きました。
こんな方法もあるのですね。
早速、試してみます。

補足日時:2013/02/06 11:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!