• ベストアンサー

マクロで最新の10行を選択してコピーするには

おはようございます。お世話になります。 マクロを使って Aセルの最新10行をコピーしたいのですが Aセルに入力されているのが10行のときは Sub copy() Range("A1:A10").copy End Sub これでコピー出来るのですが セルにデータを追加していって A11以降にもデータがあるとき 最新の10行だけをコピーするようなマクロは どのように記述すれば良いのでしょうか? 例えばA23まで入力されていたとして ラジオボタンを押したら A14:A23までをコピーする といった風に よろしくお願いいたします。

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

  • ベストアンサー
回答No.3

Sub copy() Dim LastDataRow as long LastDataRow=Cells(Rows.Count, 1).End(xlUp).Row'←最終行を出す。 Range("A"& LastDataRow-10 & ":A" & LastDataRow).copy End Sub Range("A"& LastDataRow-10 & ":A" & LastDataRow).copy というのは、 Range("A1:A11").copy というのと書き方は変わってません。 ただ、数字部分を変数に置き換えただけですので、 A列からB列が良いのなら、 Range("A"& LastDataRow-10 & ":B" & LastDataRow).copy                        ↑ Range("A1:B11").Copy というのと同じ結果です。 うーん、説明下手で申し訳ないですが、なんとなく理解できましたか?

a5224661
質問者

お礼

何度もありがとうございます! 非常にわかりやすい説明で初心者の自分にも理解できました。 文句なしのベストアンサーです

その他の回答 (2)

  • shintaro-2
  • ベストアンサー率36% (2266/6245)
回答No.2

>最新の10行だけをコピーするようなマクロは >どのように記述すれば良いのでしょうか? 最新の10行は不可能ですが、 Selection.End(xlDown).Select ActiveCell.Offset(-9, 0).Range("A1:A10").Select ActiveCell.Activate Selection.Copy とすれば、一番下まで飛んで、そこから上に10行分クリップボードにコピーします

a5224661
質問者

お礼

ありがとうございます。 やってみたら空白行を含む一番下のセルまで行けました

回答No.1

Sub copy() Range("A1:A10").copy End Sub Cells(Rows.Count, 1).End(xlUp).Row'←最終行を出す。 Sub copy() Dim LastDataRow as long LastDataRow=Cells(Rows.Count, 1).End(xlUp).Row'←最終行を出す。 Range("A"& LastDataRow-10 & ":A" & LastDataRow).copy End Sub たぶん…こうでしょうか? http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html#resize こういうのも参考にどうぞ

a5224661
質問者

お礼

ありがとうございます! 思い通りの結果が得られました。 すみません、あともう1つお聞きしたいのですが もしB行まで入力があったとして AとBの両方を同時にコピーすることって出来ますでしょうか? B23まで入力されていたとして ラジオボタンを押したら A14:B23までをコピーする といった感じに 何度もすみませんが何卒よろしくお願いいたします・・・

関連するQ&A

専門家に質問してみよう