插入后,Excel将数据向下移动

希望有人可以帮我在这里:(

在一系列工作簿(从来不是一个好主意:))中,用户运行一个macros,该Workbook1Workbook1复制数据,并使用Workbook1 Insert Shift:=xlDown该数据。

问题是这样的:在目的地下方有较高的行和一个分组的文本框,而不是将它们向下移动,而是使macros的行大小变大,文本框不移动。

我已经设置文本框组Move and size with cells并尝试CopyOrigin:=xlFormatFromLeftOrAbove但似乎没有任何区别。

有人可以帮忙吗?

谢谢


编辑

这里是完整的代码:(注释掉原来的想法,下面加了个build议)

 Sub MakeQuote2() Application.ScreenUpdating = False Dim sourceRange As Range, loopRange As Range Dim targetRange As Range Dim FRow As Long Dim m As Long Dim p As Long m = Sheets("Workbook1").Rows.Count FRow = Sheets("Workbook1").Range("A" & m).End(xlUp).Row Set sourceRange = ActiveSheet.Range("A9:E" & FRow) Set targetRange = Workbooks.Open("C:\Users\j\Documents\Trial1.xltm").Sheets("Workbook2").Range("A4") sourceRange.Copy Sheets("Workbook2").Rows("4:4").EntireRow.Insert 'Select 'Selection.Insert 'Shift:=xlDown p = FRow + 5 Sheets("Workbook2").Rows("4:" & p).Copy Sheets("Workbook2").Rows("4:4").PasteSpecial xlPasteValues Sheets("Workbook2").Range("A2").Select Application.CutCopyMode = False Workbooks("Copy.xlsm").Close SaveChanges:=False Application.ScreenUpdating = True End Sub 

谢谢!

如果您复制整行,则粘贴会将所有内容都向下移动。 如果您的复制源仅有几列,则数据将向下移动,但不会移动行格式或对象。 这在Excel中不仅在VBA中是正确的。

此代码适用于我(我更改了一些引用以在我的环境中testing它):

 Set sourceRange = Sheets("Sheet2").Range("A9:E" & FRow).EntireRow '<-- Added EntireRow here. Set targetRange = Sheets("Sheet1").Range("A4") '<-- This is never used. sourceRange.Copy Sheets("Sheet1").Rows("4:4").EntireRow.Insert 
  • 我唯一的补充是将EntireRow添加到源范围来复制。 如果您只需要列A:E我build议您根据FRow - 9插入空行,然后在添加的行中复制并粘贴A:E
  • 请注意,您在原始代码中混合了引用Sheets("Workbook1")ActiveSheet ,并且从不使用targetRange

加成

正如第一个提示中所提到的,在粘贴相关列之前添加空白行,可以使用类似下面的代码:

 Sheets("Sheet1").Rows("4:" & FRow - 9 + 4).EntireRow.Insert Set sourceRange = Sheets("Sheet2").Range("A9:E" & FRow) Set targetRange = Sheets("Sheet1").Range("A4") sourceRange.Copy targetRange.PasteSpecial 

如果你想要下面的文本框移动和上面的单元格的大小,那么它不足以使用

 .Insert Shift:=xlDown 

相反,你需要使用

 .EntireRow.Insert 

在这里输入图像说明