2015-04-03 116 views
0

我有一个每天完成的审计。我被要求将审核要点保存在一张单独的表格中供管理部门审核。球队。代码在下面,但是当我运行它时,出现错误:Script out of range将数据从1张复制到另一个可用行中的另一张

Sub copy1() 
Dim sheet2 As Worksheet 
Dim sheet10 As Worksheet 

Set sheet2 = Worksheets("sheet2") 
Set sheet10 = Worksheets("sheet10") 

sheet2.Range("a2:g10").Copy 
sheet10.Cells(Rows.count, 1).End(xlUp).Offset(1, 0).pastspecial xlPasteValues 

Application.CutCopyMode = False 
Application.ScreenUpdating = True 


End Sub 
+0

谢谢你们。这对初学VBA程序员来说是一项很棒的服务。我使用了上面的代码,并重写了几次,因为“脚本超出范围”错误。解决方案非常简单,将“sheet2”更改为“DataEntry”。一切正常。再次感谢您的帮助。 – floatpilot99 2015-04-07 14:01:36

回答

0

这很难肯定地说,但它可能是您收到“下标超出范围”错误,因为你的工作簿中并没有名为“Sheet2的”和“Sheet10”工作表。

以下代码从Sheet2复制数据并将数据的值粘贴到Sheet10上的下一个可用行。

Sub Copy2() 

Dim DestinationStartingCell As Range 
Dim SheetRowCount As Long 

Worksheets("Sheet2").Range("A2:I29").Copy 

SheetRowCount = Worksheets("Sheet10").Rows.Count '1048576 for Excel 2007 and later 
Set DestinationStartingCell = Worksheets("Sheet10") _ 
.Range("A" & SheetRowCount).End(xlUp).Offset(1, 0) 
DestinationStartingCell.PasteSpecial xlPasteValues 

End Sub 
+0

我怎样才能使它动态的,每天的范围将被复制到工作表10的下一行。 – floatpilot99 2015-04-03 14:50:41

+0

请参阅:http://stackoverflow.com/questions/12497804/finding-first-blank-row-then-writing如果你更新你的问题正文以更清楚你需要什么,我也会更新我的答案来匹配它。我看到您的问题标题暗示您希望将结果复制到下一行。 – davidmneedham 2015-04-03 14:55:46

0

您可以使用此代码

emptyrow=WorksheetFunction.CountA(Workbooks(<workbookname>).Sheets(10).Range("A:A"))+1 

Workbooks(<workbookname>).Sheets(10).Cells(emptyrow,1).pastespecial xlPasteValues 

动态发现Sheet10第一个空行并粘贴至。

相关问题