Бобу необходимо использовать функцию СУММ в макросе, чтобы найти сумму всех значений в столбце. Проблема в том, что количество суммируемых ячеек будет различным; при одном запуске макроса это может быть 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 To 3         Select Case Run         Case 1             myRange = Worksheets("Sheet1").Range("A1", "A100")

Case 2             myRange = Worksheets("Sheet1").Range("A1", "A300")

Case 3             myRange = Worksheets("Sheet1").Range("A1", "A25")

End Select         Results = WorksheetFunction.Sum(myRange)

Range("B" & Run) = Results     Next Run End 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.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (3217) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Using_SUM_In_a_Macro [Использование SUM в макросе].