我正试图将值从一个名为"经济假设"的工作表粘贴到另一个名为"经济模拟"的工作表。
给出一点背景,在"经济假设"中第17、20、23和26行。生成随机数,然后影响第14行中出现的数字。我想把"经济模拟"的第14行复制到第3行,从b列开始。
对于我来说,在循环中执行此操作也是理想的,因为我需要重复此操作1000次(即我需要复制1000个不同的行14)。
我的代码如下:Sub Macro1()
Sheets("Economic Assumptions").Activate
For i = 1 To 1000
Range("B17:BL17") = WorksheetFunction.RandArray(1, 63)
Range("B20:BL20") = WorksheetFunction.RandArray(1, 63)
Range("B23:BL23") = WorksheetFunction.RandArray(1, 63)
Range("B26:BL26") = WorksheetFunction.RandArray(1, 63)
Sheets("Economic Simulations").Range(Cells(i + 2, 2), Cells(i + 2, 64)).Value = Sheets("Economic Assumptions").Range("B14:BL14").Value
Next i
End Sub
一切正常,除了Sheets("Economic Simulations").Range(Cells(i + 2, 2), Cells(i + 2, 64)).Value = Sheets("Economic Assumptions").Range("B14:BL14").Value
这行,它给了我"应用程序定义或对象定义的错误";运行时。我试着修改线通过改变Sheets
Worksheets
甚至Application.Worksheets
,但是他们都不工作。
任何建议,我可以做这个复制和粘贴将非常感激!如果有区别的话,我复制的范围总是固定的;它是我要粘贴到的范围,每次需要增加1行。
这肯定是一个重复的问题,应该这样结束,但我找不到一个明确的线索。
问题是您没有使用工作表引用完全限定Cells
,因此它们将引用您之前设置为另一个工作表的活动工作表。With
子句是一种简洁的方法。
Sub Macro1()
For i = 1 To 1000
With Sheets("Economic Assumptions")
.Range("B17:BL17") = WorksheetFunction.RandArray(1, 63)
.Range("B20:BL20") = WorksheetFunction.RandArray(1, 63)
.Range("B23:BL23") = WorksheetFunction.RandArray(1, 63)
.Range("B26:BL26") = WorksheetFunction.RandArray(1, 63)
End With
With Sheets("Economic Simulations")
.Range(.Cells(i + 2, 2), .Cells(i + 2, 64)).Value = Sheets("Economic Assumptions").Range("B14:BL14").Value
End With
Next i
End Sub