从非活动工作表复制行并在下一个可用行的非活动工作表上复制?

时间:2015-09-09 15:54:41

标签: excel vba

我使用以下宏从后台的非活动工作表中复制一系列行,并将其粘贴到下一个可用行的非活动工作表上。

由于某种原因,我得到错误对象不支持此属性或方法,运行时错误438。

Sub Save8()
Application.ScreenUpdating = False
Set NextRow = Range("B" & Sheets("Time Allocation").UsedRange.Rows.Count + 1)
Sheets("Time Allocation").Range("B506:L515").Copy
Sheets("Time Allocation").NextRow.PasteSpecial Paste:=1, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Set NextRow = Nothing
Application.ScreenUpdating = True
End Sub

给出错误的代码部分是:

Sheets("Time Allocation").NextRow.PasteSpecial Paste:=1, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

但是,如果我使用下面的代码,它可以正常工作并将其粘贴到指定的范围,但是我不能使用它,因为我打算在页面下面有相同行数的多个副本和粘贴到下一个可用行:

Sub Save8()
Application.ScreenUpdating = False
Set NextRow = Range("B" & Sheets("Time Allocation").UsedRange.Rows.Count + 1)
Sheets("Time Allocation").Range("B506:L515").Copy
Sheets("Time Allocation").Range("B516").PasteSpecial
Application.CutCopyMode = False
Set NextRow = Nothing
Application.ScreenUpdating = True
End Sub

请有人告诉我我哪里出错了吗?

2 个答案:

答案 0 :(得分:0)

据我所知,这是你需要的,不确定你使用它是什么,因为UsedRange将继续调整范围,但你不是使用该对象进行复制,因此你将得到一个重复的副本。这是我的代码:

Dim NextRow As Range
Sub Save8()
Dim sht As Worksheet, currentRow As Range
Application.ScreenUpdating = False
Set sht = Sheets("Time Allocation")
Set currentRow = sht.Range(sht.UsedRange.Address)
Set NextRow = currentRow.Offset(currentRow.Rows.Count, 0)

Sheets("Time Allocation").Range("B506:L515").Copy
'NextRow.PasteSpecial Paste:=1, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
NextRow.PasteSpecial xlPasteAll
Application.CutCopyMode = False
Set NextRow = Nothing
Set currentRow = Nothing
Set sht = Nothing
Application.ScreenUpdating = True
End Sub

答案 1 :(得分:0)

因为这里

Sheets("Time Allocation").NextRow.PasteSpecial (etc ...)

您告诉Excel在NextRow上找不到属性Worksheet Object,该属性不存在。

相反,只需像这样调用PasteSpecial方法:

NextRow.PasteSpecial (etc ...)

它会起作用。