Во-первых, вы можете оптимизировать и санировать свой код, используя оператор with
:
Санируйте ваш код, используя with
Не делай
Sheet1.Range("A" & I).Value = rs(0)
Sheet1.Range("B" & I).Value = rs(1)
Sheet1.Range("C" & I).Value = rs(2)
...
У
With Sheet1
.Range("A" & I).Value = rs(0)
.Range("B" & I).Value = rs(1)
.Range("C" & I).Value = rs(2)
...
End With
Суммирование диапазона вместо элементарных ячеек
Понимание вашего первоначального высказывания
В вашем первоначальном утверждении:
Application.WorksheetFunction.Sum(Sheet1.Range("E" & I), Sheet1.Range("P" & I))
Вы вызываете функцию рабочего листа с несколькими аргументами (как вы это делаете с SUM(E1, P1)
, но вы хотите суммировать диапазон, т.е. SUM(E1:P1)
.
Решение вашей проблемы
Лучше попробуй:
Application.WorksheetFunction.Sum(Sheet1.Range("E" & I & ":P" & I))
Обратите внимание, что вы также можете определить свой диапазон следующим образом:
With Sheet1
Application.WorksheetFunction.Sum(.Range(.Cells(I, "E"), .Cells(I, "P"))
End With
Это последнее может быть очень полезно, потому что вы можете использовать .Cells
с буквой или Long для столбца.