Использование SUM () в VBA
Если у меня есть набор ячеек на листе, который я хочу добавить, я могу использовать формулу:
=SUM(Sheet1!A1:A10)
Чтобы сделать это в подпрограмме, я бы использовал:
Sub example1()
Dim r As Range, v As Variant
Set r = Sheets("Sheet1").Range("A1:A10")
v = Application.WorksheetFunction.Sum(r)
End Sub
Однако, если я хочу добавить одну ячейку на нескольких листах, я использую формулу:
=SUM(Sheet1:Sheet38!B2)
В VBA эта строка терпит неудачу, как объяснено вУкажите диапазон Excel для листов в VBA:
Sub dural()
v = Application.WorksheetFunction.Sum("Sheet1:Sheet3!B2")
End Sub
У меня есть два обходных пути. Я могу суммировать, программируя цикл:
Sub example2()
Dim i As Long
Dim v As Variant
v = 0
For i = 1 To 38
v = v + Sheets(i).Range("B2")
Next i
End Sub
или с помощьюEvaluate()
:
v = Evaluate("Sum(Sheet1:Sheet3!B2)")
Можно ли использоватьApplication.WorksheetFunction.Sum()
для этого расчета, или я должен придерживаться цикла?