【问题标题】:Run-time error '1004': Why?运行时错误“1004”:为什么?
【发布时间】:2015-02-25 03:38:06
【问题描述】:

我的代码有问题。出现一个错误,我无法摆脱,也不知道它出现的原因。我希望这是像我这样的新手的愚蠢错误,并且您能够轻松发现它。我希望如此。
错误是:
“运行时错误 '1004':应用程序定义的或对象定义的错误”
代码如下:

Sub CGT()

Dim Worksheet As Worksheets
startrow = Worksheets("GUTS").Cells(10, 1) 'Here I put 1
endrow = Worksheets("GUTS").Cells(11, 1)   'Here I put 1000    
For x = endrow To startrow Step -1

If Cells(x, "Q").Value = "Sale" Then

    If Cells(x, "D").Value = "1" Then

    For i = startrow To endrow

        If Cells(x - i, "R").Value = "1" Then
        Range("G" & x).FormulaR1C1 = "=R[-i]C/R[-i]C[-1]*RC[-1]" 'Debugger highlights this line as bugged.. :(

        End If
    Next
    End If
    End If
Next

End Sub  

提前谢谢大家,
最好的问候,
阿图尔。

【问题讨论】:

  • 你得到什么错误信息?
  • "运行时错误'1004':应用程序定义或对象定义错误"

标签: vba excel


【解决方案1】:

因为i 在您的代码中是可变的,所以您需要在创建公式时将其移到引号之外。这应该有效:

Range("G" & x).FormulaR1C1 = "=R[-" & i & "]C/R[-" & i & "]C[-1]*RC[-1]"

【讨论】:

    【解决方案2】:

    目前我觉得有两个问题:

    1> startRow = Worksheets("GUTS").Cells(10, 1) 将创建一个引用范围的对象(如果与“set”一起使用)并且不返回该范围的行。我想你正在寻找:

    startRow = Worksheets("GUTS").Cells(10, 1).Row

    endRow = Worksheets("GUTS").Cells(11, 1).Row
    

    虽然你可能只是说 startRow = 1 & endRow = 1000 更好

    2> If Cells(x - i, "R").Value = "1" 当 x 和 i 都是相同的数字并因此引用行号“0”时产生错误,这可能是“对象未定义”的来源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多