我编写代码基本上是一个概念验证,以便在我看到它的运行方式后能够准确地使用我的代码。然而,尽管尽我所能,尽管我在线搜索,但我似乎无法确定为什么我的代码返回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函数本身的调用,因为当我删除所述问题时一切正常。
答案 0 :(得分:0)
Worksheets("Sheet1")
的背景资格。它必须是某个地方&#34;,即在工作簿的上下文中,例如ThisWorkbook.Worksheets("Sheet1")
。c
。不好的做法。LastRow
。再次,不好的做法。当宏开始时,你认为这两个变量应该有什么价值? Excel 应该如何知道如果你不告诉它你想到了什么?
调暗变量并为其指定初始值。
始终Dim
您的变量。另外,为了避免这样的填充,请使用Option Explicit
作为任何模块中的第一行。这将是一个完整性检查代码并在编译之前指出错误。它将强制在使用之前声明所有变量的良好习惯,并将获取许多其他东西
与
比较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