- ベストアンサー
複数行の最下行の範囲選択
こんにちは、マクロ初心者です。 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列だけの最下行を選択するというのは簡単に出来たのですが、このように複数の範囲を 選択する場合は、どのようにコードを書くべきでしょうか。 マクロのスキルが無い為困っています。 アドバイスをよろしくお願いいたします。
- みんなの回答 (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がでる。
その他の回答 (1)
- n-jun
- ベストアンサー率33% (959/2873)
セルの行番号/列番号を取得する http://www.moug.net/tech/exvba/0050077.htm 例えばこんな方法とかも、参考になるかと。
お礼
早速の回答ありがとうございます。 なるほど、参考になりました。
お礼
回答ありがとうございます。 少し応用が必要と思いますが、参考になりました。 ありがとうございました。