插入后,Excel将数据向下移动
希望有人可以帮我在这里:(
在一系列工作簿(从来不是一个好主意:))中,用户运行一个macros,该Workbook1
从Workbook1
复制数据,并使用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