for b(1)=1to a(1) step 1
sheet2.range(cells(b(1)*1000-988,2),cells(b(1)*1000+1,21)).copy
sheets.add
activesheet.paste cells(2,2)
next
第二次循环在copy处报错,方法作用worksheet失败
问题在“range(cells(b(1)*1000-988,2),cells(b(1)*1000+1,21))”这一句里。因为这里的cells前面没有限定工作表。如果没有指定工作表,cells默认的工作表是激活的工作表。第一次运行的时候你应该是在sheet2,这时sheet2里是有你的数据的。后面你新建的工作表,激活的工作表(activesheet)已经不是sheet2了,而是你新建的工作表,再从激活的工作表里取值都是空的,所以第二次运行的时候cells(b(1)*1000-988的结果应该是一个负数,所以就报错了。
正确的代码:
For b(1)=1to a(1) Step 1
Sheet2.Range(Sheet2.Cells(b(1)*1000-988,2),Sheet2.Cells(b(1)*1000+1,21)).Copy
Sheets.add
Activesheet.Paste Cells(2,2)
Next
或者
With Sheet2
For b(1)=1to a(1) Step 1
.Range(.Cells(b(1)*1000-988,2),.Cells(b(1)*1000+1,21)).Copy
Sheets.add
Activesheet.Paste Cells(2,2)
Next
End With