希望有人可以帮助我:(
在一系列工作簿中(从来不是一个好主意:)),用户运行一个宏来复制Workbook1
中的数据并使用Insert Shift:=xlDown
中的Workbook2
插入它。
问题在于:目的地下方有较高的行和分组的文本框,而不是将它们向下移动,宏会使行大小变大,文本框也不会移动。
我已将文本框组设置为Move and size with cells
并尝试CopyOrigin:=xlFormatFromLeftOrAbove
,但似乎没有任何区别。
有人可以帮忙吗?
由于
以下是完整的代码:(注释掉原始想法,在下面添加了建议)
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
谢谢!
答案 0 :(得分:1)
答案 1 :(得分:1)
如果您复制整行,粘贴会将所有内容都移除。如果您的复制源只有几列,则数据会向下移动,但行格式或对象不会随之移位。这在Excel中是正确的,不仅在VBA中。
此代码适用于我(我更改了一些引用以在我的环境中测试它):
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
列,我建议您根据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