プロが教えるわが家の防犯対策術!

コピー用に、関数入りの行を一番下(65535行)にとってあります。
これについて。。。
関数入りの行を挿入したいときは?の質問に、
下記のようなマクロを作成してくださった方がいらっしゃるのですが、
間に挿入されるのではなく、上書きされて、前のデータが消えてしまいます。
例えば、3行目と4行目の間…5行目と6行目の間…として、
挿入で使いたいときは、
どこをどのように直したら良いか、教えてください。
空白行がたくさんあって、その行は詰めていただいて良いです。
うーん…もしかして…意味不明ですか?


'一番下の行コピー
Rows(65535).Copy

'現在のカーソル位置の一番左のA列へ移動
Cells(ActiveCell.Row, 1).Select

'そこに貼り付け
ActiveSheet.Paste

'コピーモード解除
Application.CutCopyMode = False

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/08/05 16:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!