生成运行时错误1004时更改为单元格
当我改变从字母到单元格的范围时,下面的部分开始产生运行时错误1004:
用字母:
Application.SumIf(Sheets(4).Range("E:P"), _ Sheets(6).Cells(i, 1).Value2, _ Sheets(4).Range("K:K"))
没有字母:
Application.SumIf( _ Sheets(4).Range(Cells(1, 5), Cells(intLstRowA, 16)), _ Sheets(6).Cells(i, 1).Value2, _ Sheets(4).Range(Cells(1, 11), Cells(intLstRowA, 11)))
它是一个更大的循环的一部分:
intLstRowA = Sheets(4).Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To 9 Sheets(6).Cells(i, 2) = _ Format( _ Application.SumIf( _ Sheets(4).Range(Cells(1, 5), Cells(intLstRowA, 16)), _ Sheets(6).Cells(i, 1).Value2, _ Sheets(4).Range(Cells(1, 11), Cells(intLstRowA, 11))) _ / _ Application.SumIf(Sheets(4).Range("E:P"), _ Sheets(6).Cells(i, 1).Value2, _ Sheets(4).Range("P:P")) * 0.01, _ "Percent") Next i
我从来没有使用。select,活跃等,我无法弄清楚是什么导致了错误。 你能帮我理智的检查一下吗?
这可能是因为你没有正确限定你的Cells
属性调用。 如果你没有资格,它会假定你指的是当前活动的工作表。
Application.SumIf( _ Sheets(4).Range(Cells(1, 5), Cells(intLstRowA, 16)), _ Sheets(6).Cells(i, 1).Value2, _ Sheets(4).Range(Cells(1, 11), Cells(intLstRowA, 11))) ' ^^^^^ ^^^^^
这些细胞在什么表上? 明确地说:
' vvvvvvvvvvvvvvv vvvvvvvvvvvvvvv Application.SumIf( _ Sheets(4).Range(Sheets(4).Cells(1, 5), Sheets(4).Cells(intLstRowA, 16)), _ Sheets(6).Cells(i, 1).Value2, _ Sheets(4).Range(Sheets(4).Cells(1, 11), Sheets(4).Cells(intLstRowA, 11))) ' ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
前一种情况下,如果与Sheet(4)
不同的工作表恰好处于活动状态,则会发生错误,因为这样会在一张工作表中定义一个工作表,这些工作表的拐angular由另一工作表上的单元格定义 – 显然是无意义的。
如果Sheets(4)
是ActiveSheet
则Sheets(4).Range(Cells(1, 5), Cells(intLstRowA, 16))
将仅适用。
这是因为Cells(1,5)
并不是说细胞的意思。 所以相信ActiveSheet的单元格。
Sheets(4).Range(Sheets(4).Cells(1, 5), Sheets(4).Cells(intLstRowA, 16))
将工作。
但更好的是你正在与:
With ActiveWorkbook.Sheets(4) ... ... .Range(.Cells(1, 5), .Cells(intLstRowA, 16))... ... End With