Бобу необходимо использовать функцию СУММ в макросе, чтобы найти сумму всех значений в столбце. Проблема в том, что количество суммируемых ячеек будет различным; при одном запуске макроса это может быть 100 ячеек, при следующем – 300, а при третьем – только 25.
Во-первых, легко использовать большинство функций рабочего листа (например, СУММ) ) из макроса. Все, что вам нужно сделать, – это поставить перед именем функции «Application.WorksheetFunction». или просто «WorksheetFunction». Таким образом, если вы знаете, что каждый запуск макроса потребует суммирования A1: A100, затем A1: A300 и, наконец, A1: A25, вы можете использовать такой макрос:
Public Sub Sum_Demo ( ) Dim myRange Dim Results Dim Run As Long For Run = от 1 до 3 Select Case Run Case 1 myRange = Worksheets («Sheet1»). Range («A1», «A100») Case 2 myRange = Worksheets («Sheet1»). Диапазон («A1», «A300») Случай 3 myRange = Worksheets («Sheet1»). Range («A1», «A25») End Select Results = WorksheetFunction.Sum (myRange) Range («B» & Run) = Результаты Next RunEnd Sub
В этом макросе используется For. . . Следующий цикл для определения различных диапазонов суммируемых ячеек. Затем он использует функцию рабочего листа СУММ для присвоения суммы переменной результатов, которая (наконец) вставляется в ячейку в столбце B. Результаты первого запуска помещаются в B1, второго – в B2, а третьего – в B3. .
Хотя этот конкретный макрос может быть не таким полезным, он показывает несколько полезных приемов, например, как определить именованный диапазон, как использовать функцию SUM и как вставить сумму в клетка. Макрос не показывает, как выбрать переменное количество ячеек для суммирования. Для этого лучше всего полагаться на метод End объекта Range. В следующей строке кода показано, как можно заполнить сумму диапазона, начинающегося с A1 и продолжающегося непосредственно перед первой пустой ячейкой в столбце:
myRange = ActiveSheet.Range («A1», Range («A1»). End (xlDown)) Range («B1») = WorksheetFunction.Sum (myRange)
Обратите внимание, что диапазон (myRange) определяется как начинающийся с A1 и продолжающийся через все метод End возвращается. Затем это суммируется и вставляется в B1.
Источник: