将值从一个工作表粘贴到另一个工作表时出现应用程序定义或对象定义的错误



我正试图将值从一个名为"经济假设"的工作表粘贴到另一个名为"经济模拟"的工作表。

给出一点背景,在"经济假设"中第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这行,它给了我"应用程序定义或对象定义的错误";运行时。我试着修改线通过改变SheetsWorksheets甚至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

最新更新