从一张纸插入一列到另一张纸
我目前正试图从我的“旧”表复制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.Range
比Sheets("Old").Range
更强大。
此外, select被认为是不好的做法,最好避免。
我希望这有帮助!
编辑
继续编辑,如果你现在想从J253
开始,将插入的列移到N
你可以做Sheets("Current").Range("N253").Insert Shift:=xlShiftToRight
或者
Sheets("Current").Range("J253").Offset(columnOffset:=4).Insert Shift:=xlShiftToRight
但真正的问题是什么时候你正好停止插入相同的行数范围,并在下面,以及每次你想插入多less行。 如果你尝试自动化一个繁琐的复制粘贴,你可能会自动化的一路?!
原来:
经过一次迭代:
经过两次迭代: