这里的新手,
我正在尝试制作一个VBA代码以在状态栏中显示SumProduct
这是我插入的模块的代码:
Option Explicit
Public SrPr As Long
Public rng As Range
Sub SumProduct()
SrPr = Application.WorksheetFunction.SumProduct(rng)
Application.DisplayStatusBar = True
Application.StatusBar = "SumProduct: " & SrPr
End Sub
此后,我在Excel对象中选择了一个工作表并插入了以下内容:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set rng = Target
Call SumProduct
End Sub
然后我继续测试我的代码,但是计算错误,单击后我得到以下错误:
运行时错误1004:无法获取WorksheetFunction类的Sumproduct属性
答案 0 :(得分:0)
对于您的错误:
SUMPRODUCT
在VBA中不起作用。您可以将EVALUATE
与内部的字符串函数一起使用来执行计算。
所以SrPr = Application.WorksheetFunction.SumProduct(rng)
这是无效的。
但是,
伪:SrPr = Evaluate("=SumProduct(...)")
有效。
注意:
SUMPRODUCT
也通常意味着处理多个数组。
如果您想对rng
求和,则
Application.WorksheetFunction.Sum(rng)
并且您不应该在函数后命名子对象,即不要将其称为sumproduct。例如。称为SumRange
答案 1 :(得分:0)
SUM
就可以了。更不用说,Sumproduct甚至不是vba方法,这将导致错误。 Dim
!(除非您出于某些特定原因将它们公开为您的范围)在我提供的示例中,我只是汇总了工作表中所有活动的(带有值)单元格,但是可以随意将范围更改为所需的范围
Option Explicit
Private Sub sum_active_cells()
Dim lr as Long, lc as Long
Dim rng as Range
lr = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
lc = Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Row
Set rng = Range(Cells(1, 1), Cells(lr, lc))
Dim result as Long
result = Application.WorksheetFunction.Sum(rng)
Application.DisplayStatusBar = True
Application.StatusBar = "Sumproduct: " & result
End Sub