• ベストアンサー

複数行の最下行の範囲選択

こんにちは、マクロ初心者です。    A  B  C  D  E  F  G  H  I 1  あ  あ  あ        あ  あ     あ 2  あ  あ  あ        あ  あ     あ 3  あ     あ                 あ 4        あ                 あ 5        あ                 あ 6        あ                 あ 7        あ                 あ 8        あ                 あ 9        あ 10 上記のような表があるとき セル"A"列から"I"列までの最下行にあたる行を検索し、 更に最下行までの範囲をコピーして、別シートにコピーさせたいのです。 (上記の例だと、セル"A1"~"I9"の範囲をコピーする) Range("A1", Range("I1").End(xlDown)).Select Selection.Offset(0, 0).Select 上記のコードでできると思ったのですが、なぜか不必要な範囲まで選択されてしまいます。 (下方向に数行余計に選択されてしまう) これではダメなのでしょうか? ちなみに、数式などは入っておらず、入力されていないセルは全て空白です。 A列だけの最下行を選択するというのは簡単に出来たのですが、このように複数の範囲を 選択する場合は、どのようにコードを書くべきでしょうか。 マクロのスキルが無い為困っています。 アドバイスをよろしくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

Usedrangeでやってみた Sub test03() ActiveSheet.UsedRange.Select End Sub うまくいく(A1:H9)を範囲選択する。 また上記範囲以外の余分なセルにデータを入れて削除すると 跡形が残ることも無いようだ。 しかし余り使い慣れていないので、不安ある。良くWEBでもUsedRange について調べてみたほうが良いように思う。(時間がなくて調べてません。) ーー 泥臭いが Sub test04() rmx = 1 For j = 1 To 30 r = Cells(1000, j).End(xlUp).Row If r > rmx Then rmx = r Next j MsgBox rmx cmx = 1 For i = 1 To 100 c = Cells(i, 256).End(xlToLeft).Column If c > cmx Then cmx = c Next i MsgBox cmx End Sub というのもどうだろうか。1000,100、30は適当に限度を 変えてください。 ーー 例データ あ あ あ - - あ あ あ - あ あ あ - - あ あ あ - あ - あ - - - あ あ あ - - あ - - - - あ - - - あ - - - - あ - - - あ - - - - あ - - - あ - - - - あ - - - あ - - - - あ - - - あ - - - - あ - で9,9がでる。

buffie
質問者

お礼

回答ありがとうございます。 少し応用が必要と思いますが、参考になりました。 ありがとうございました。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

セルの行番号/列番号を取得する http://www.moug.net/tech/exvba/0050077.htm 例えばこんな方法とかも、参考になるかと。

buffie
質問者

お礼

早速の回答ありがとうございます。 なるほど、参考になりました。

関連するQ&A