生成运行时错误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)ActiveSheetSheets(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