方法复制单元格值时,对象_Worksheet的范围失败

时间:2014-12-19 16:11:54

标签: excel vba excel-vba

我知道有类似的问题已被问过,但我已经阅读过了,我仍然无法弄清楚出了什么问题。我有一个包含4个工作表的工作簿。

下面的Sub只是创建特定格式文档的过程的开始,因此有更多内容,但它在第一个副本时失败。我尝试用Worksheets("Requests")Worksheets("Output")替换变量output和reqSheet,但它仍然会抛出相同的错误。

有人可以解释一下我做错了什么吗?

Sub generateOutput(requests As Integer)
Dim i As Integer
Dim output As Excel.Worksheet
Dim reqSheet As Excel.Worksheet

Set reqSheet = Worksheets("Requests")
Set output = Worksheets("Output")

i = 0
Do While (i < requests)
output.Range("A" & i).Value = reqSheet.Range("A" & i).Value    'This line fails
i = i + 1
Loop

End Sub

错误讯息:

  

方法&#39;范围&#39;对象&#39; _Worksheet&#39;失败。

1 个答案:

答案 0 :(得分:1)

第一次循环迭代会产生output.Range(“A0”)。Value = reqSheet.Range(“A0”)。Value,这是无效的。 Excel使用基于一行的行索引。

但是,如果requests很小(例如,低于50k),我会使用以下方法:

Sub generateOutput(requests As Integer)
    Dim output As Excel.Worksheet
    Dim reqSheet As Excel.Worksheet

    Set reqSheet = Worksheets("Requests")
    Set output = Worksheets("Output")

    output.Range("A1:A" & requests).Value = reqSheet.Range("A1:A" & requests).Value
End Sub