【问题标题】:VBA Sum a Range of CellsVBA对一系列单元格求和
【发布时间】:2017-08-03 15:03:25
【问题描述】:

我正在尝试编写一个简单的 VBA 宏,该宏将采用活动单元格的列和用户的输入来在单行上添加一系列单元格。范围是通过将用户输入的整数添加到活动列(即结束列)来计算的。问题是它给了我运行时错误“424”并告诉我“需要对象”。当我运行它时,对总和线生气。

这是我的代码。我刚开始使用 VBA,所以不会那么难……对吧?

Sub Food()
Dim first As Variant
Dim last As Integer
Dim days As Integer
Dim month As Variant
Dim total As Double
first = ActiveCell.Column
days = InputBox("Days in the month?")
last = first + days
month = Range(Cells(first, 4), Cells(last, 4))
total = Excel.WorksheetFunction.Sum(Report.Range(month))
Worksheets(1).Cells(1, 13).Value = total
End Sub

【问题讨论】:

  • 当你输入sum(Report.Range(month))时,report是一个工作表
  • 为什么不在A13中输入formula,而是输入结果?
  • total = Excel.WorksheetFunction.Sum(month),month 是一个值数组,在此实例中不是范围。

标签: vba excel sum range


【解决方案1】:

错误是您尝试对范围求和的方式。试试这样:

total = WorksheetFunction.Sum(month)

每当您在 VBA 中发现问题时,请尝试将其隔离并单独解决。例如,在您的情况下,作为隔离示例,这样的事情会有所帮助:

Option Explicit

Sub TestMe()

    Dim rngRange As Range
    Set rngRange = Range("A1:A5")

    'Any of these is ok:
    Debug.Print WorksheetFunction.Sum(rngRange)
    Debug.Print WorksheetFunction.Sum(Range("A1:A5"))
    Debug.Print WorksheetFunction.Sum(1, 2, 3)
    Debug.Print WorksheetFunction.Sum(Array(1, 2, 3))
    Debug.Print WorksheetFunction.Sum(Array(1, 1, 545), Array(-2))

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多