• ベストアンサー

Excel VBAマクロ セル位置取得方法

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

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

  • ベストアンサー
回答No.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

cwaremoko
質問者

お礼

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

その他の回答 (3)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.3

マメ知識的に   Range("B1").SpecialCells(xlCellTypeLastCell).Row これでも取れますよ。 ただし、「使用した領域の最終行」を取るので、 例えばB列よりC列の方がデータが多かったら、 C列の最終行を返してきます。 そこが「使えるか否か」の境目です。 なので私も   Cells(Rows.Count, 2).End(xlUp).Row をオススメします。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

例えばA列での最終行i は i = Cells(Rows.Count, "A").End(xlUp).Row

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

シートの十分に下のセルからCtrl+↑で上向きにジャンプする、という動作をマクロで行います。 dim h as range set h = range("B65536").end(xlup) あるいは dim lastrow as long lastrow = range("B65536").end(xlup).row

cwaremoko
質問者

補足

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

関連するQ&A

専門家に質問してみよう