VBAど初心者です。どうしても最終行のデータを選んだシートにコピーできません。 LastRow.Selectのところで、止まってしまいます。どのように行を設定していいのかさっぱりわかりません。どなたか、ご指導のほどよろしくお願いします。
Sub copy_last_line()
Dim LastRow As Long
Sheets("Sheet1").Select
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
LastRow.Select
Selection.Copy
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("A1").Select
End Sub
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
となりますが、いかがでしょうか?
mogurun さん、丁寧な解説をありがとうございました。教えていただいだことをよく理解するようにして、もう少し頑張ってみます。ありがとうございました。
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
yaritsusozaiさん、度々の回答ありがとうございます。試してみたら、もちろんきちんとまわりました。レンジの書き方がいまいちなので、本当に助かりました。ありがとうございます!
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
tom04さん、回答をありがとうございました。さっそく試してみました。tom04さんのようにすらすらとマクロが書けるようになりたいのですが、、、、頑張ります。本当にありがとうございました。
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)
と書く方法もあります。
この回答への補足
皆様、回答本当にありがとうございました。初心者なので、キチンと説明ができていませんでした。シート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
No.2
- 回答日時:
どのシートモジュールに書かれているか不明ですがSheet2以外のモジュールでしたら
Sheets("Sheet2").Cells(LastRow, 1).Select
のようにシート名から指定する必要があります。それ以降のコードについても同じです。
No.1
- 回答日時:
こんばんは!
ざっとコードを拝見すると
>LastRow.Select
でエラーになるのでは?
LastRowは変数の宣言をしているとおり、長整数型の整数ですので選択しようがありません。
>Cells(LastRow, 1).Select
にしてみてはどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) ワークシート内を検索 1 2022/12/19 23:46
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
マクロで最終行を取得してコピーしたい
Visual Basic(VBA)
-
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
Excel VBA、 別ブックの最終行セルへのコピー&値ペースト
Visual Basic(VBA)
-
-
4
VBA別シートの最終行の下行へ貼り付けされるようにしたいです。
その他(Microsoft Office)
-
5
別シートの最終行に貼り付けするマクロを教えてください。 シートYのE3からE15までをコピー シート
Excel(エクセル)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
Excel2000/VBA:値と書式のみ貼り付けたい。
Excel(エクセル)
-
8
VBA 数式を残して値をクリアについて
Excel(エクセル)
-
9
【エクセル】IF関数 AまたはBならばCと表示
その他(Microsoft Office)
-
10
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
11
エクセルマクロにて最終行まで数式をコピーする構文
Excel(エクセル)
-
12
VBA 空白行に転記する
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELのSheet番号って変更でき...
-
マクロの「SaveAs」でエラーが...
-
楽天RSSからエクセルVBAを使用...
-
VBAで変数の数/変数名を動的に...
-
マクロ実行後に別シートの残像...
-
VBA別シートの最終行の次行へ転...
-
100万件越えCSVから条件を満た...
-
VBA 最終行を選んだシートにコ...
-
Excel2013で切り取り禁止
-
VBA 空白行に転記する
-
Excel VBA オートフィルターで...
-
ExcelのVBマクロを、バックグラ...
-
VBAでEXCELから固定長...
-
1004RangeクラスのPasteSpecial...
-
ExcelのVBA ListBox.RowSource...
-
Count Ifのセルの範囲指定に変...
-
VBAで複数のエクセルシートから...
-
VBA Userformで一部別シートに...
-
月毎に現金出納帳に転記するコ...
-
B列の最終行までA列をオート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロの「SaveAs」でエラーが...
-
VBA 空白行に転記する
-
EXCELのSheet番号って変更でき...
-
マクロ実行後に別シートの残像...
-
VBA別シートの最終行の次行へ転...
-
Count Ifのセルの範囲指定に変...
-
Changeイベントで複数セルへの...
-
VBAで変数の数/変数名を動的に...
-
VBA 別ブックからの転記の高速...
-
【VBA】特定の条件でセルをコピー
-
VBA 実行時エラー1004 rangeメ...
-
楽天RSSからエクセルVBAを使用...
-
Unionでの他のシートの参照につ...
-
複数シートの複数列に入力され...
-
ExcelのVBマクロを、バックグラ...
-
100万件越えCSVから条件を満た...
-
VBA Userformで一部別シートに...
-
Excel VBA オートフィルターで...
-
Excel2013で切り取り禁止
-
VBAでEXCELから固定長...
おすすめ情報