• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:関数入りの行挿入。。。上書きではなく挿入でした。。。)

関数入り行の挿入方法について

trytrytryの回答

  • ベストアンサー
  • trytrytry
  • ベストアンサー率37% (13/35)
回答No.1

貼り付けと挿入のソース上の違いは 貼り付けが Paste なのに対して 挿入は Insert なだけです。 下を読んで解らない時はもう一度聞いてください。 最終行に値が有る状態で行の挿入を行うとエラーが出てしまいます。 そこで、挿入の前に一行削除する必要があります。 例1)挿入する行を選択している事が前提です。 sub 例1() Dim del_row As Long '↓削除できる行の検索(A列を必須入力列としています。) del_row = Range("A65536").End(xlUp).Row + 1 '↓不要行の削除(Shift:=xlupは削除後上に詰めるを意味します。) Rows(del_row).Delete Shift:=xlUp '↓最終行のコピー Rows(65535).Copy '↓コピー内容の挿入(挿入する列が選択されている事が前提です) Selection.Insert Shift:=xlDown '↓コピーモードの終了 Application.CutCopyMode = False end sub 例2)例1と似ていますが、選択行の下に挿入します。 Sub 例1() Dim del_row As Long del_row = Range("A65536").End(xlUp).Row + 1 Rows(del_row).Delete Shift:=xlUp Rows(65535).Copy '↓コピー内容の挿入(Offset(1,0)で選択行の1行下に設定) Selection.Offset(1, 0).Insert Shift:=xlDown Application.CutCopyMode = False End Sub

iillyy
質問者

お礼

例1の方が、イメージにピッタリでした。 うまく動いてくれて、感激。 ご丁寧なコメントも助かりました。 ありがとうございました。 また機会がありましたらお世話してください。

関連するQ&A

  • 複数行コピー、貼り付け実行時エラー1004

    ユーザー側が任意の場所を選択コピー し(2行毎) また 任意の位置に貼り付ける動作ですが 1回目のコピー、貼り付けは正常動作しますが 再度 コピー(任意の場所),貼り付け時に1004実行エラーが発生します。 下記はコードです。 どうかご教授お願いいたします。 Dim StartRow As Long, LastRow As Long, SRC As Long Sub コピー() If ActiveCell.Row < 76 Then Exit Sub StartRow = ActiveCell.Row: SRC = Selection.Rows.Count If (ActiveCell.Row Mod 2) = 0 Then StartRow = ActiveCell.Row If (Selection.Rows.Count Mod 2) = 0 Then LastRow = StartRow + Selection.Rows.Count - 1 Else LastRow = StartRow + Selection.Rows.Count End If Else StartRow = ActiveCell.Row - 1 If (Selection.Rows.Count Mod 2) = 0 Then LastRow = StartRow + Selection.Rows.Count + 1 Else LastRow = StartRow + Selection.Rows.Count End If End If ActiveSheet.Range(ActiveSheet.Cells(StartRow, 1), ActiveSheet.Cells(LastRow, 19)).Copy End Sub Sub 貼付け() If ActiveCell.Row >= 76 Or Application.ClipboardFormats(1) <> -1 Then ActiveSheet.Unprotect If (ActiveCell.Row Mod 2) = 0 Then StartRow = ActiveCell.Row Else StartRow = ActiveCell.Row - 1 End If ActiveSheet.Paste Destination:=Cells(StartRow, 1): Application.CutCopyMode = False ActiveSheet.Protect End If End Sub

  • 関数入りの行を挿入したいです。

    エクセルの一番下の行に、関数入りのコピー用の行を1行残し、あとはデータになっています。 一番下の行をコピーし、その行を挿入したいときは、どのようにマクロを組んだら良いでしょうか。 かなり初心者なので、できましたら、具体的に記述して教えてください…

  • 任意の整数まで欠番行を挿入するマクロは?

    エクセルのSheet1のA列の1行目から下の行へ1から1000まで数字(整数)が入っているとします。ただし、欠番があります。そこで、欠番を挿入して行を増やしたいのですが、すべての整数を挿入するには以下のマクロで解決しているのですが、任意の整数(下二桁が同じ整数)まで挿入したら次の桁へ飛んで、また同じ任意の整数(下二桁が同じ整数)まで来たら次の桁へ飛んでという具合に、これらを繰り返したいのです。例えば、1から46まで、100から146まで、200から246まで、300から346までという具合です。どなたかご教授よろしくお願いします。 Sub 欠番挿入() Dim i As Integer i = 0 Do Until ActiveSheet.Range("a2").Offset(i, 0).Value = "" ActiveSheet.Range("a2").Offset(i, 0).Activate If ActiveCell.Value <> ActiveCell.Row Then Rows(ActiveCell.Row).Insert ActiveSheet.Range("a2").Offset(i, 0).Value _ = ActiveCell.Row End If i = i + 1 Loop End Sub

  • VBAで行コピーして挿入

    1行目の内容をコピーして、他の場所に指定数分だけ 挿入するマクロを作りました。 そのマクロ自体は、正しく動いたのですが、コピー元の1行目に 他のシートを参照する関数が入っていた場合、想定どおりの 結果を得ることができません。 [SHEET1:データのみを記載] 省略 [SHEET2] A1セル:   =SHEET1!$A1 ←コピー元の行 [マクロ:一部抜粋] myR = Application.InputBox("挿入する行数を入れてください", , "1") For i = 1 To myR   Rows("1:1").Copy   Cells(ActiveCell.Row, 1).Select   Selection.Insert Shift:=xlDown   Selection.EntireRow.Hidden = False Next i どういう結果を求めたいかというと、たとえば、 SHEET2のA10セル上で、このマクロを実行し、 "挿入行 = 3" と指定したら A10:   =SHEET1!$A10 A11:   =SHEET1!$A11 A12:   =SHEET1!$A12 となってほしかったのですが、結果は、 A10:   =SHEET1!$A10 A11:   =SHEET1!$A10 A12:   =SHEET1!$A10 となってしまいました。 どうにか、求める結果を得られるようにできないでしょうか?

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

    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

  • シート1のC列の最終行をコピーして同じ行に値貼り付けしたい

    シート1のC列の最終行を取得して その行を丸々値貼り付けするマクロを作りたいと思います。 シート3のB18の値をシート1のC列の最終行の1つ下のセルに値貼り付け すると、その行のA、B列に日付が入力される関数が入っています。(下まで) 関数が入ったままだと、うまくいかない時があるので最終行をコピーして値貼り付けしたいのですが、マクロの作り方を教えてください。 シート1の最終行に貼り付け Sheets("Sheet3").Select Range("B18").Select Selection.Copy Sheets("Sheet1").Select Range("C65536").End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End Sub 最終行をコピーして値貼り付け Dim 最終行 As Integer 最終行 = Range("C65536").End(xlUp).Row Range("A6:C" & 最終行).Select Selection.Copy Sheets("Sheet1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End Sub このマクロだと、A6からC列の最終行まで全てコピーされてしまうので、C列の最終行のAからC列まで1行だけコピーできないでしょうか?

  • 簡単なマクロですが教えてください。

    マクロで、現在アクティブになっているセルのある行全体を選択し、 そこに行を追加(挿入)する。 その後、1行目にある行全体をコピーして、追加(挿入)した 行に1行目の数式をコピーしたいのです。 マクロの記録から作成しようとしたら、 毎回13行目に挿入・コピーするようになってしまいました。 例えば、マクロ実行時に5行目にアクティブセルがあれば、 5行目に挿入したいのです。 この方法を教えて頂けませんでしょうか。 現在の誤ったマクロ構文を付けますので、 どのように直したらよいか教えて頂けませんか。 何卒よろしくお願いいたします。 Sub osietekudasai() ' ' osietekudasai Macro ' ' Rows("13:13").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Rows("1:1").Select Selection.Copy Rows("13:13").Select ActiveSheet.Paste Application.CutCopyMode = False Range("A13").Select

  • エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです

    エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです 1つのエクセルファイルの中に複数のSheetがあります。 各Sheetの4行目以降(5行目から)にデータのあるA列~O列をコピーしていって、 挿入-ワークシート(Sheet1という名前で構わない)に全てを順番にコピーしていきたいです。 ”新しいマクロの記録”で下記のように作成したのですが、  ・5行目からデータのあるA列~O列をコピーしていく   ・存在する全てのSheetから上記の作業をする というマクロの書き方が分かりません。 恐れ入りますがお時間ある方で上記の内容をご理解頂ける方がいましたらアドバイス頂ければ非常に助かります。 Sub Macro1() Sheets.Add Sheets("ER10(zy)").Select Rows("5:8").Select Selection.Copy Sheets("Sheet1").Select ActiveSheet.Paste Sheets("ER10(cx)").Select Rows("5:9").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A5").Select ActiveSheet.Paste Sheets("ER10(zht)").Select Rows("5:13").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A10").Select ActiveSheet.Paste End Sub

  • エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです

    エクセルのマクロで各Sheetのデータを複数コピー&ペーストしたいです 1つのエクセルファイルの中に複数のSheetがあります。 各Sheetの4行目以降(5行目から)にデータのあるA列~O列をコピーしていって、 挿入-ワークシート(Sheet1という名前で構わない)に全てを順番にコピーしていきたいです。 ”新しいマクロの記録”で下記のように作成したのですが、  ・5行目からデータのあるA列~O列をコピーしていく   ・存在する全てのSheetから上記の作業をする というマクロの書き方が分かりません。 恐れ入りますがお時間ある方で上記の内容をご理解頂ける方がいましたらアドバイス頂ければ非常に助かります。 Sub Macro1() Sheets.Add Sheets("ER10(zy)").Select Rows("5:8").Select Selection.Copy Sheets("Sheet1").Select ActiveSheet.Paste Sheets("ER10(cx)").Select Rows("5:9").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A5").Select ActiveSheet.Paste Sheets("ER10(zht)").Select Rows("5:13").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("A10").Select ActiveSheet.Paste End Sub

  • エクセル マクロでシートをデスクトップに保存する

    ファイルにある複数のシートの中から、Bシートだけを抜き出してデスクトップに保存するマクロがわかりません。 他のサイトで以下のVBAがあったので参考にしたのですが Cドライブのマイドキュメントに保存されます。 デスクトップに直接保存したいです。 Sub シートコピーR() ' 1.保存したいシートをシートコピーする。 Sheets("Sheet1").Copy ' 2.アクティブシートのセル全体に対して、コピー&値のみ貼り付けをする。 ActiveSheet.Cells.Copy ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues 'ActiveSheet.Cells.PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False ' 3.アクティブブックを保存する。 ActiveWorkbook.SaveAs FileName:="C:\ファイル名.xls" End Sub 教えてください。