设置范围时VBA运行时错误1004

时间:2019-12-02 06:25:08

标签: excel vba range ms-error-1004

基本上,我正在尝试优化在动态范围内复制值的过程。

这是我目前拥有的并且可以正常工作:

trial_copy.opus

我想用更快的方法代替迭代,例如:

For i = 0 To 6 Worksheets("S").Cells(wstaty, (4 + i)).Value = Worksheets("B").Cells(id, (13 + i)).Value Next i

但是当我尝试:

Range("A1:A5").Value = Range("B1:B5").Value

我知道

  

运行时错误1004

所以我已经分解了语句以找出问题所在,所以我有:

Worksheets("S").Range(Cells(wstaty, 4), Cells(wstaty, 10)).Value = Worksheets("B").Range(Cells(id, 13), Cells(id, 19)).Value

并且调试器说Set 2行发生错误,这对我来说意义不大

(变量ID始终> 2)

1 个答案:

答案 0 :(得分:0)

Cells(…)与当前工作表相关。因此,为了安全起见,最好始终使用全名来查找范围。在您的示例中,将是

Worksheets("B").Range(Worksheets("B").Cells(…), Worksheets("B").Cells(…))    等

为避免冗长的代码,我建议为工作表使用变量。