【问题标题】:How to create a sum function in VBA如何在 VBA 中创建求和函数
【发布时间】:2019-01-28 08:18:59
【问题描述】:

如何在 VBA 中使用求和函数,我正在尝试下面的部分,但似乎不起作用。

temp=Application.run("Sum",range("A1").value,range("A2").value)
Range("A1").value=temp

即 如果 A1=3 且 A2=3 我希望最终值为 9。

【问题讨论】:

  • 3和3之和是9?
  • Sum function in VBA的可能重复
  • 对不起,是一个很快的,应该是 3*3 的总和

标签: excel vba


【解决方案1】:

抱歉,速度太快了,应该是 3*3 的总和

所以你不想要总和,而是单元格的乘积。

使用WorksheetFunction.Product(Range, Range2,.....) 代替sum,该函数允许多个范围作为参数。

【讨论】:

【解决方案2】:

根据我的测试,请尝试如下 VBA 代码:

Sub sum()
    Dim myRange As Range
    Dim tmp As Long
    Set myRange = Worksheets("Sheet1").Range("A1:A2")
    tmp = Application.WorksheetFunction.sum(myRange)
    Worksheets("Sheet1").Range("A3") = tmp
End Sub

更多信息请看:WorksheetFunction.Sum Method

【讨论】:

  • 测试有效,但不适用于我创建的功能,请您转到此链接stackoverflow.com/questions/51951655/… 您会明白我的意思,因为我创建了自己的功能,但无法在与您上面描述的方式相同。
【解决方案3】:

使用

Application.WorksheetFunction.Sum(Range("A1"),Range("A2"))

请注意,如果您没有在前面说明工作表名称,那么它将隐式使用当前的 Activesheet,这可能并不总是您想要的。

您可以使用 With 语句来提供父工作表参考,例如

With ThisWorkbook.Worksheets("Sheet1")
  temp = Application.WorksheetFunction.Sum(.Range("A1"),.Range("A2"))
End With

您在之前的问题中似乎注意到:3+3 是 6。

如果你想要乘法,那么做:

temp = .Range("A1") * .Range("A2")

或者,

temp = Application.WorksheetFunction.Product(.Range("A1") ,.Range("A2"))

Application.Run 用于按名称运行宏并传递所需的参数。除非您有一个名为 "Sum" 的宏,否则我对编译的那一行感到惊讶。我也不喜欢以函数命名的宏。这令人困惑。使用如上所示的WorksheetFunction 方法既好又清晰。

【讨论】:

  • 感谢您迄今为止的所有回复,如果我创建了自己的名为 CapFloor 的函数,我可以使用“Application.worksheetFunction.Product”在 VBA 中调用它吗
  • 我问的主要问题是在这个链接上:stackoverflow.com/questions/51951655/… 它会让你更详细地了解我想要做什么。
  • 我同意你对 application.run 所说的话,它说第一个条件称为宏,我不知道它们指的是什么。
  • 话虽如此,该函数是由开发团队创建的,所以当我打开 excel 时,我创建了一个名为 CapFloor 的函数,我可以通过在单元格中键入“=CapFloor( )" ,它需要 16 个输入,如果你去这个链接....你会看到我的主要问题是什么,我只是没有得到任何牵引力所以发布了这个以了解如何调用函数到vba等。链接是stackoverflow.com/questions/51951655/…
  • 您好,我正在回答您在上面提出的问题,而不是您的其他问题。对于数字的乘积(在这种情况下为 9),请使用我在底部显示的语法。对于 Application.Run 方案,必须有一个名称为工作簿中第一个参数引用的宏。如果您的开发团队开发了一个名为 Sum 的宏,那么您需要查看这个。我会说 1) 不要称它 Sum 会混淆事物,因为它是一个现有函数 2) 当运算是乘法时不要称它 Sum 。这充其量是误导。
【解决方案4】:

你也可以试试这个。

Sub Sum_num()
 Dim temp As Integer
 temp = Range("A1") + Range("A2")
 MsgBox temp
End Sub

【讨论】:

猜你喜欢
  • 2021-12-04
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 2020-04-19
  • 2019-09-22
  • 1970-01-01
相关资源
最近更新 更多