从一张纸插入一列到另一张纸

我目前正试图从我的“旧”表复制4列到我的“当前”表。 这是我现在的代码:

Sub PasteData()

Sheet3.Range("J1:M252").Copy

Sheet1.Range("J1:M252").Insert Shift:=xlShiftToRight

Application.CutCopyMode = False

Sheet1.Range("J253:J462").Offset(ColumnOffset:=4).Insert Shift:=xlShiftToRight

'Inserts the comments from the "Old" sheet

End Sub

这复制和粘贴的列很好,但它是replace我目前在“当前”文件的4列中的数据。 我想把它做成这样,那些在这些列中被replace的东西就会向右移动。 谢谢。

编辑我遇到了一个问题。 我很好地粘贴了这些列,但仍然有数据没有移到正确的位置。 我打算在第252行之后留下空的列JM。我想将J253:Y282(高亮显示的单元格)从N-AC列右移。 我插入了一张照片给更好的描述。

在这里输入图像说明

这对我来说(testing):

 Sub copyColumns() Dim rOrigin As Range, rDestination As Range Set rOrigin = Sheets("Old").Range("J1:M252") Set rDestination = Sheets("Current").Range("J1") rOrigin.Copy rDestination.Insert Shift:=xlShiftToRight Application.CutCopyMode = False End Sub 

或更less的线路

 Sub copyColumns() Sheets("Old").Range("J1:M252").Copy Sheets("Current").Range("J1").Insert Shift:=xlShiftToRight Application.CutCopyMode = False End Sub 

我build议使用表单代码名称而不是(实际)名称 ,因为如果有人更改表单名称,代码将停止工作。

图纸代码名称在项目浏览器中查看,并且是Sheet1, Sheet2, etc 。 因此, Sheet1.RangeSheets("Old").Range更强大。

此外, select被认为是不好的做法,最好避免。

我希望这有帮助!

编辑

继续编辑,如果你现在想从J253开始,将插入的列移到N你可以做Sheets("Current").Range("N253").Insert Shift:=xlShiftToRight或者

Sheets("Current").Range("J253").Offset(columnOffset:=4).Insert Shift:=xlShiftToRight

但真正的问题是什么时候你正好停止插入相同的行数范围,并在下面,以及每次你想插入多less行。 如果你尝试自动化一个繁琐的复制粘贴,你可能会自动化的一路?!

原来:

在这里输入图像说明

经过一次迭代:

在这里输入图像说明

经过两次迭代:

在这里输入图像说明