为什么我的.Range函数返回1004运行时错误

时间:2017-08-16 06:47:26

标签: vba range excel-2013

我编写代码基本上是一个概念验证,以便在我看到它的运行方式后能够准确地使用我的代码。然而,尽管尽我所能,尽管我在线搜索,但我似乎无法确定为什么我的代码返回1004错误,我也不知道如何修复它。任何帮助将不胜感激。

Worksheets("Sheet1").Range("J3:J" & LastRow).Formula = "=J2+G2"
Worksheets("Sheet1").Range("K3:K" & LastRow).Formula = "=K2+H2"

Do While Worksheets("Sheet1").Range("J" & c).Value <> ""
    c = c + 1
Loop

MsgBox c

问题似乎是Range函数本身的调用,因为当我删除所述问题时一切正常。

1 个答案:

答案 0 :(得分:0)

  • 您不符合Worksheets("Sheet1")的背景资格。它必须是某个地方&#34;,即在工作簿的上下文中,例如ThisWorkbook.Worksheets("Sheet1")
  • 您永远不会启动变量c。不好的做法。
  • 您也永远不会初始化变量LastRow。再次,不好的做法。

当宏开始时,你认为这两个变量应该有什么价值? Excel 应该如何知道如果你不告诉它你想到了什么?

调暗变量并为其指定初始值。

始终Dim您的变量。另外,为了避免这样的填充,请使用Option Explicit作为任何模块中的第一行。这将是一个完整性检查代码并在编译之前指出错误。它将强制在使用之前声明所有变量的良好习惯,并将获取许多其他东西

enter image description here

比较
Option Explicit

Sub stuff()
Dim c As Long, LastRow As Long
c = 1
LastRow = 20 ' or use code to work out the last row

ThisWorkbook.Worksheets("Sheet1").Range("J3:J" & LastRow).Formula = "=J2+G2"
ThisWorkbook.Worksheets("Sheet1").Range("K3:K" & LastRow).Formula = "=K2+H2"

Do While Worksheets("Sheet1").Range("J" & c).Value <> ""
    c = c + 1
Loop

MsgBox c
End Sub