マクロでコピー貼り付けやってみたいのですが。

このQ&Aのポイント
  • マクロ初心者が、既存のExcelの機能ではできないことをマクロで実現したいと思っています。
  • 具体的には、sheet1のE2:J1109のデータをコピーして、sheet2のE3:J1110に貼り付けたいです。
  • また、コピーの際には最終行を取得し、その行までのデータを貼り付けたいです。
回答を見る
  • ベストアンサー

マクロでコピー貼り付けやってみたいのですが。

マクロの初心者です。Dim で宣言してやりたいと思っています。 既存のExcelの機能で出来ないことはないと思いますが、敢えて、マクロででないか。 やってみたいと思っています。 やりたいこと等について 1 sheet1のE2:J1109の範囲のデータをコピーしての別sheet2のE3:J1110の範囲に貼り付けたい。 2 その時に最終行を取得してコピーをするとしたら、どんなコードが必要なのか 3 最終行の取得のコードの書き方が分からない 4 ネットで下記のような(一部変更)に作ってみたが、これで良いのでしょうか、わからない。 以上のことを答えて頂けませんか。よろしくお願いします。 Sub テスト() Dim range1 As Range Set range1 = Range("E2:J1109") range1.Copy ActiveSheet.Paste Destination:=("sheet1").Range("E2:J1109") ActiveSheet.Paste Destination:=("sheet2").Range("E3:J1110") Application.CutCopyMode = False End Sub

  • rr5se
  • お礼率96% (87/90)

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>sheet1のE2:J1109の範囲のデータをコピーしての別sheet2のE3:J1110の範囲に貼り付けたい。 Sub Test01()   Sheets("Sheet1").Range("E2:J1109").Copy Sheets("Sheet2").Range("E3")   Application.CutCopyMode = False End Sub >最終行の取得のコードの書き方が分からない Sheet2のE列の最終行の次の行に貼り付けるのなら Sub Test02()   Dim LastRow As Long   'Sheet2のE列の最終行を取得   LastRow = Sheets("Sheet2").Cells(Rows.Count, "E").End(xlUp).Row + 1   Sheets("Sheet1").Range("E2:J1109").Copy Sheets("Sheet2").Cells(LastRow, "E")   Application.CutCopyMode = False End Sub

rr5se
質問者

お礼

お礼のコメントの位置を間違えました。すみません。ありがとうございました。勉強になりました。今後もよろしくお願いします。 最終行のこと、なるぼど決まっていない方が多いですね。わかりました。

rr5se
質問者

補足

ありがとうございます。これでできましてが、もう一つ質問させて頂いてもよろしいですか。すみません、sheet1のE2:J1109のところも最終行をとるようにすることは、おかしいことなのでしようか。よくわかっていないのですが、お教え頂けませんか。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

> sheet1のE2:J1109の範囲のデータをコピーしての別sheet2のE3:J1110の範囲に貼り付けたい。 Sub Test03()   Sheets("Sheet1").Range("E2:J1109").Copy   Sheets("sheet2").Range("E3").PasteSpecial   Application.CutCopyMode = False End Sub Sheet2の最終行に貼り付け Sub Test04()   Sheets("Sheet1").Range("E2:J1109").Copy   Sheets("sheet2").Cells(Rows.Count, "E").End(xlUp).Offset(1).PasteSpecial   Application.CutCopyMode = False End Sub コピーではなく値だけを転記 Sub Test05()  Sheets("Sheet2").Range("E3:J1110").Value = Sheets("Sheet1").Range("E2:J1109").Value End Sub >sheet1のE2:J1109のところも最終行をとるようにすることは、おかしいことなのでしようか。 おかしくはないでしょう、普通、最終行は決まっていない方が多いでしょう Sub Test6()   'Sheet1のE2から最終行までをコピー   With Sheets("Sheet1")     .Range("E2:J" & .Cells(Rows.Count, "E").End(xlUp).Row).Copy   End With   'Sheet2のE列の最終行の次の行に貼付け   Sheets("Sheet2").Cells(Rows.Count, "E").End(xlUp).Offset(1).PasteSpecial   Application.CutCopyMode = False End Sub

rr5se
質問者

お礼

ありがとうございました。勉強になりました。今後もよろしくお願いします。 最終行のこと、なるぼど決まっていない方が多いですね。わかりました。

関連するQ&A

  • マクロについて教えてください。

    最近、勉強し始めました。 名簿を作成しています。Sheet1のデータを2種類に分けてSheet2(県外)、Sheet3(県内)のあらかじめ作成している表に振り分けたいのです。 しかしながら、1名分のデータをコピーして張り付けることはしたのマクロで出来たのですが、2名分もこのようにするとなると手入力したほうが速いような気がしています。 なにかいい方法がありましたら教えてください。 Sub コピーして別のシートに貼り付ける1() Worksheets("Sheet1").Activate Range("B11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("B10:E17") Range("C11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("A18:E19") Range("D11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("F10:K17") Range("E11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("F18:K19") Range("F11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("M10:S10") Range("G11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("M11:S11") Range("H11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("M12:S12") Range("I11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("M13:S13") Range("J11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("M14:S14") Range("K11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("M15:S15") Range("L11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("M16:S16") Range("M11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("M17:S17") Range("N11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("M18:S18") Range("O11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("M19:S19") Range("P11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("T10:T19") Range("Q11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("U10:U19") Range("R11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("V10:V19") Range("S11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("W10:W19") Range("T11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("X10:X19") Range("U11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("Y10:Y19") Range("V11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("Z10:Z19") Range("W11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("AA10:AA19") Range("X11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("AB10:AB19") Range("Y11").Copy ActiveSheet.Paste Destination:=Worksheets("Sheet2").Range("AC10:AG19") End Sub

  • エクセルマクロでセルのコピー

    困ってしまったので質問させてください Sub 一定秒おきに実行() Dim i As Integer  For i = 1 To 10   Application.Wait Now() + TimeValue("00:00:10")  コピーして別のシートに貼り付ける Next End Sub ---------------------------------- Sub コピーして別のシートに貼り付ける() Worksheets("sheet1").Activate Range("A1:G1").Copy ActiveSheet.Paste Destination:=Worksheets("sheet").Range("??") End Sub ----------------------------------- 以上のようなコードがありますが Sheet1のA1:G1を10秒おきにSheet2の1行、2行、3行 と順番にコピーする Sub コピーして別のシートに貼り付ける() のコードを教えてください よろしくお願いいたします

  • EXCEL VBA コピー貼り付けについて

    はじめまして。 エクセルのマクロの記録でマクロ作成してますが、希望通りに張り付け出来ずにいます。 (1)張り付けた場所に関数がコピーされない。 (2)最終行にコピーする方法が解らない。 (3)印刷範囲の張り付けできない 皆様お忙しい中恐縮で申し訳ありませんがご教授お願い致します。 Sub コピー() ' Range("A1:AR68").Select Selection.Copy  Range("A69").PasteSpecial xlPasteAll 「最終行へ変更したい」 ActiveSheet.Paste 「関数も含めて貼り付けたい」  ・「印刷範囲をコピーしたい」   End Sub

  • コピー後に値のみ貼り付け エクセル、VBAの記述について

    マクロ初心者です。 エクセルで選択範囲を指定後コピーし、 自動的に別のシートの末尾に貼り付けられるようにしたのですが、 この内容のまま「貼り付け」を「値のみ貼り付け」に訂正する場合 どのように変更すればいいのか、教えてくださると嬉しいです。 宜しくお願いいたします。 Sub 選択範囲をコピー後、指定シートの末尾に貼り付け Worksheets("sheet1").Activate Range("b11:I17").Copy Workbooks("book2.xls").Worksheets("Sheet1").Activate 行 = Range("B1").CurrentRegion.Rows.Count + 1 ActiveSheet.Paste _ Destination:=Workbooks("book2.xls").Worksheets("Sheet1").Range("B" & 行) End Sub

  • シート間のコピー時の列幅と行の高さ

    マクロ初心者です。下記はシート間のコピーですが、列幅と行の高さも一緒にコピーするにはどのように書いたらよいでしょうか。マクロは"sheet1"に入っています。よろしくお願いいたします。 Sub macro1() Worksheets("sheet2").Activate Cells.Clear Worksheets("sheet1").Activate Worksheets("sheet1").UsedRange.Copy ActiveSheet.Paste Destination:=Worksheets("sheet2").Range("A1") End Sub

  • 最終行のコピーペーストのマクロ作成をご指導ください。

    最終行のコピーペーストのマクロ作成をご指導ください。 1つのブックに60シートあります。D~Sまでの行をセルの結合をして文字入力がしてあります。 又、どんどんテキスト行が追加されてゆきます。毎回、行の最終行をコピーして 指定セルB21:s23(セル結合してあり)に貼り付けたい(3シート目~60シート目全てのシート)のですが、上手く行きません。 マクロ素人ですが、思考錯誤してみましたが、駄目です。ご指導下さい。 出来れば、1から教えてください。御願いします。 Dim n As Integer Dim LastR1 As Long, LastR2 As Long For n = 3 To 60 'データシートの数だけループ LastR1 = Sheets(n).Range("B22") '貼付先取得 LastR2 = Sheets(n).Range("D65536").End(xlUp).Row '貼付元シートの最終行取得 With Sheets(n) '貼付元データをコピー(最終行) ここがおかしい? .Range(.Cells(22, 4), .Cells(LastR2, 60)).Copy End With ActiveSheet.Paste Destination:=Sheets(n).Cells(LastR1) '貼付 Next End Sub

  • エクセルVBAで値だけをコピーペーストする方法

    下記のマクロは、エクセルのシート「精算」のb12~bz342の範囲からからシート「集計表」のアクティブセルを始点に、空白行を除いたデーターを貼り付けます。 しかし計算式と書式を抜いた値だけを貼り付けたいので、 ActiveSheet.Pasteを ActiveSheetSpecial Paste:=xlPasteValues に書き換えたらエラーになってしまいました。 どなたか詳しい方ご教授下さい。 よろしくお願いします。 Sub 精算項目コピー() Dim 最終列 As Integer Sheets("精算").Activate 最終列 = Range("b342").End(xlUp).Row Range("b12:bz" & 最終列).Select Selection.Copy Sheets("集計表").Select ActiveSheet.Paste  ←この部分を書き換えたらエラー End Sub

  • エクセル マクロ for next 繰り返し

     マクロは初心者です。  以下のコピーペーストを  for ~ next で3回繰り返すコードを書くには?  変数  処理  回数指定  次に  「データ範囲の指定とコピー貼り付け」になります。   ご教示願えれば幸甚に存じます。    ◎同じ処理を二回例示します。  Range("D2").Select Windows("新規_1502.csv").Activate Range("C2:F" & 最終行).Select  Selection.Copy Windows("sinki 1502_新規.xlsm").Activate ActiveSheet.Paste ActiveSheet.Paste Range("K2").Select Windows("新規_1502.csv").Activate Range("G2:J" & 最終行).Select Selection.Copy Windows("sinki 1502_新規.xlsm").Activate ActiveSheet.Paste ActiveSheet.Paste

  • 図形をコピーするマクロ

    Sheets("Sheet1").Select ActiveSheet.Shapes("図 1").Select Selection.Copy Sheets("Sheet3").Select Range("E9").Select ActiveSheet.Paste 上記は、"Sheet1"の"図1"を、"Sheet3"の"E9"にコピーするマクロです。 これを改良して、Sheet1以外のシートがアクティブになっている時に実行すると、"Sheet1"の"図1"が、現在アクティブになっているシートのセレクトされているセルにコピーされるようにしたいのですが。 どのようにマクロを変えればいいでしょうか。

  • excelのマクロでrangeの選択がうまくいきません。

    excelのマクロでrangeの選択がうまくいきません。 以下のマクロをsheet2に書きました。testcopyは動きますが、testcopy2は動きません。なぜなのでしょうか。どうすればいいのでしょうか。それ以外のマクロの部分との関係から、cellsを使い、数字を使ってrangeの処理をしたいのです。よろしくお願いします。 Sub testcopy() Worksheets("sheet1").Range("B3:C10").Copy Worksheets("sheet2").Range("e5").Select ActiveSheet.Paste End Sub Sub testcopy2() Worksheets("sheet1").Range(Cells(3, 2), Cells(10, 3)).Copy Worksheets("sheet2").Range("e5").Select ActiveSheet.Paste End Sub