- ベストアンサー
マクロで最新の10行を選択してコピーするには
おはようございます。お世話になります。 マクロを使って Aセルの最新10行をコピーしたいのですが Aセルに入力されているのが10行のときは Sub copy() Range("A1:A10").copy End Sub これでコピー出来るのですが セルにデータを追加していって A11以降にもデータがあるとき 最新の10行だけをコピーするようなマクロは どのように記述すれば良いのでしょうか? 例えばA23まで入力されていたとして ラジオボタンを押したら A14:A23までをコピーする といった風に よろしくお願いいたします。
- みんなの回答 (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 というのと同じ結果です。 うーん、説明下手で申し訳ないですが、なんとなく理解できましたか?
その他の回答 (2)
- shintaro-2
- ベストアンサー率36% (2266/6245)
>最新の10行だけをコピーするようなマクロは >どのように記述すれば良いのでしょうか? 最新の10行は不可能ですが、 Selection.End(xlDown).Select ActiveCell.Offset(-9, 0).Range("A1:A10").Select ActiveCell.Activate Selection.Copy とすれば、一番下まで飛んで、そこから上に10行分クリップボードにコピーします
お礼
ありがとうございます。 やってみたら空白行を含む一番下のセルまで行けました
- satoron666
- ベストアンサー率28% (171/600)
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 こういうのも参考にどうぞ
お礼
ありがとうございます! 思い通りの結果が得られました。 すみません、あともう1つお聞きしたいのですが もしB行まで入力があったとして AとBの両方を同時にコピーすることって出来ますでしょうか? B23まで入力されていたとして ラジオボタンを押したら A14:B23までをコピーする といった感じに 何度もすみませんが何卒よろしくお願いいたします・・・
お礼
何度もありがとうございます! 非常にわかりやすい説明で初心者の自分にも理解できました。 文句なしのベストアンサーです