Рецепт

Работать с ListObject вместо UsedRange

UsedRange раздулся, макрос читает пустые тысячи строк.

Оформите данные как таблицу. Границы ведёт Excel, столбцы зовутся по имени, пустая таблица даёт DataBodyRange = Nothing — это штатная ситуация.

Код

Sub SumSales()
    Dim lo As ListObject
    Dim col As Range
    Set lo = ThisWorkbook.Worksheets("Данные").ListObjects("tblSales")
    If lo.DataBodyRange Is Nothing Then Exit Sub
    Set col = lo.ListColumns("Сумма").DataBodyRange
    Debug.Print Application.WorksheetFunction.Sum(col)
End Sub

Связанные члены API