我的代码存在问题。出现错误,我无法摆脱,也没有任何线索,为什么它出现。我希望像我这样的新手是一个愚蠢的错误,你能够很容易地发现它。我希望如此
错误是:
“运行时错误'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
提前告诉你们,
最诚挚的问候,
阿图尔。
答案 0 :(得分:2)
由于i
在您的代码中是可变的,因此在创建公式时需要将其移到引号之外。这应该有效:
Range("G" & x).FormulaR1C1 = "=R[-" & i & "]C/R[-" & i & "]C[-1]*RC[-1]"
答案 1 :(得分:0)
到目前为止我感到的两个问题是:
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 - ; x& If Cells(x - i, "R").Value = "1"
会产生错误我都是相同的数字,因此引用行号'0',这可能是'对象未定义'可能来自的地方。