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

解決済みの質問

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

こんにちは、マクロ初心者です。

   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列だけの最下行を選択するというのは簡単に出来たのですが、このように複数の範囲を
選択する場合は、どのようにコードを書くべきでしょうか。
マクロのスキルが無い為困っています。

アドバイスをよろしくお願いいたします。

投稿日時 - 2008-03-12 17:21:01

QNo.3856562

困ってます

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

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がでる。

投稿日時 - 2008-03-12 21:13:18

お礼

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

投稿日時 - 2008-03-14 18:00:57

ANo.2

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

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

回答(2)

ANo.1

セルの行番号/列番号を取得する
http://www.moug.net/tech/exvba/0050077.htm

例えばこんな方法とかも、参考になるかと。

投稿日時 - 2008-03-12 19:34:09

お礼

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

投稿日時 - 2008-03-12 20:41:55

あなたにオススメの質問