• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 最終行を選んだシートにコピーする。)

VBA 最終行を選んだシートにコピーする

このQ&Aのポイント
  • VBA初心者が最終行のデータを選んだシートにコピーする方法が分からない
  • VBAで最終行のデータを他のシートにコピーする方法を教えてください
  • VBAで最終行のデータを別のシートにコピーする手順を教えてください

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

  • ベストアンサー
  • mogurun
  • ベストアンサー率37% (3/8)
回答No.5

Range(Cells(3, 1), Cells(GYO1, 18)).Copy から察するところ シート1はA列からR列までデータがあるのですね? Range(Cells(3, 1), Cells(GYO1, 18)).Copy ↑はシート1のA列の3行目からR列の最終行までコピーなので 最終行だけの一行コピーではなくボックスコピーになります。 貴殿のスクリプトをなるべくそのまま修正すると Sub copy_last_line2() Dim GYO1 , GYO2 As Long 'シート1の最終行 GYO1 = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row 'シート2の最終行の一行下 GYO2 = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row + 1 'シート1を選択 Sheets("Sheet1").Select   'シート1のA3からR列の最終行までコピー?このままだとボックスコピーになります。   'Range(Cells(3, 1), Cells(GYO1, 18)).Copy 'シート1のA列最終行からR列最終行を一行だけコピー Range(Cells(GYO1, 1), Cells(GYO1, 18)).Copy 'シート2を選択 Sheets("Sheet2").Select   'シート2のA列の最終行のセルを選択したい?   'Range("A" & GYO2).Select 'シート2のA列の最終行のセルを選択 Cells(GYO2, 1).Select 'コピーした行をペースト ActiveSheet.Paste Application.CutCopyMode = False End Sub となりますが、いかがでしょうか?

Makimay11
質問者

お礼

mogurun さん、丁寧な解説をありがとうございました。教えていただいだことをよく理解するようにして、もう少し頑張ってみます。ありがとうございました。

その他の回答 (6)

回答No.7

「シート1、シート2、共にデータがA列~R列(1列目~18列目)にあり、行数は不定。ただしA列に空白はないものとする」 という前提であれば、 Dim GYO1 As Long Dim GYO2 As Long GYO1=Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row GYO2=Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row With Worksheets("Sheet1") .Range(.Cells(GYO1,1), .Cells(GYO1,18)).Copy End With Worksheets("Sheet2").Cells(GYO2 +1,1).PasteSpecial

Makimay11
質問者

お礼

yaritsusozaiさん、度々の回答ありがとうございます。試してみたら、もちろんきちんとまわりました。レンジの書き方がいまいちなので、本当に助かりました。ありがとうございます!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.1です。 >シート1で選んだ最終行だけををシート2のデータの最終行の下に(空白になっているところに)、コピーをする・・・ 結局、こういうコトでしょうか? Sub Sample1() Dim lastRow As Long, wS As Worksheet Set wS = Worksheets("Sheet2") With Worksheets("Sheet1") lastRow = .Cells(Rows.Count, "A").End(xlUp).Row .Cells(lastRow, "A").Resize(1, 18).Copy wS.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) End With End Sub ※ Sheet1の最終行のA~R列のデータを Sheet2のA列最終行の1行下へコピー&ペーストしています。 ※ いちいち選択しないようにしています。m(_ _)m

Makimay11
質問者

お礼

tom04さん、回答をありがとうございました。さっそく試してみました。tom04さんのようにすらすらとマクロが書けるようになりたいのですが、、、、頑張ります。本当にありがとうございました。

回答No.4

あ、失礼。 後のLOOKUPを使うやつは数値データの時のみです。

回答No.3

「シート1のA列にデータが縦に並んでおり、その最終行のデータをシート2のA1セルにコピーする」 という解釈でよろしいですか? Sub Test() Cells(Worksheets(゛sheet1゛).Rows.Count, 1).End(xlUp).Copy Worksheets(゛sheet2゛).[A1].PasteSpecial End Sub また、VBAを使わなくても、 sheet2のA1セルに、 =LOOKUP(10^10,Sheet1!A:A) と書く方法もあります。

Makimay11
質問者

補足

皆様、回答本当にありがとうございました。初心者なので、キチンと説明ができていませんでした。シート1で最後の行のデータを全部、コピーをしたいのですが、うまく説明できず、セルだけを選んだコードにしてしまいました。シート1で選んだ最終行だけををシート2のデータの最終行の下に(空白になっているところに)、コピーをするというのがさいしゅうもくてきなのですが、、、、下のようにコードを書くとシート1の最終行だけではなく最終行の上のデータまでコピーをしてしまいます(2行ほど)。RANGEの設定の仕方がわかりません。よろしくお願いします。 Sub copy_last_line2() GYO1 = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row GYO2 = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row + 1 Sheets("Sheet1").Select Range(Cells(3, 1), Cells(GYO1, 18)).Copy Sheets("Sheet2").Select Range("A" & GYO2).Select ActiveSheet.Paste Application.CutCopyMode = False End Sub

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

どのシートモジュールに書かれているか不明ですがSheet2以外のモジュールでしたら Sheets("Sheet2").Cells(LastRow, 1).Select のようにシート名から指定する必要があります。それ以降のコードについても同じです。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! ざっとコードを拝見すると >LastRow.Select でエラーになるのでは? LastRowは変数の宣言をしているとおり、長整数型の整数ですので選択しようがありません。 >Cells(LastRow, 1).Select にしてみてはどうでしょうか?m(_ _)m