繁体   English   中英

当其中一个值为文本时,Excel VBA工作表sum函数返回错误

[英]Excel VBA worksheet sum function returns error when one of values is text

我收到此错误:“运行时错误'1004'”“无法获取Worksheetfunction类的Sum属性

我有一个代码,用于查看用户表单中的多个组合框,并汇总用户选择的值。 代码工作正常,只有组合框列表中的数字。 我最近在列表中添加了一个文本选项,我将其称为“不适用”。 但是,一旦我运行代码,我就会收到上述错误。

我认为错误是因为我引入了文本选项,而VBA中的sum函数无法识别它。

反正有没有解决这个问题?

谢谢

这是我使用的代码:

Dim totalscore As Double
totalscore = WorksheetFunction.Sum(frmQA.ComboBox3.Value, frmQA.ComboBox4.Value, frmQA.ComboBox5.Value, frmQA.ComboBox6.Value, frmQA.ComboBox7.Value, frmQA.ComboBox8.Value, frmQA.ComboBox9.Value)

假设ComboBox3中的文本选项可用,请调整此部分的总和公式:

frmQA.ComboBox3.Value

对此:

Iif(IsNumeric(frmQA.ComboBox3.Value),frmQA.ComboBox3.Value,0)

如果他们都有文本选项,您可以这样做:

totalscore = totalscore + Iif(IsNumeric(frmQA.ComboBox3.Value),frmQA.ComboBox3.Value,0)
totalscore = totalscore + Iif(IsNumeric(frmQA.ComboBox4.Value),frmQA.ComboBox4.Value,0)
...

在处理完成之前,验证用户输入的条目是文本还是数值可能更好。

从粗略的一瞥代码 - 我可以推测“文本值”可能与'123(见撇号)一致。这是可能的,但这将是最终用户的尽职尽责。

因此,恕我直言,最好在计算之前进行验证检查(如Scott Holtzman所建议的那样)。

“不适用” - 使用代码中的数字零(0)或以某种方式让您的VBA映射“不适用”并将此条目更改为零(0)值。

伪代码示例:

IF frmQA.ComboBox3.Value = "NOT Applicable" then

        frmQA.ComboBox3.Value = 0
END IF

上面的建议也许可以放在工作表事件中

祝你好运

问候

RDFS

这是斯科特建议修改的答案

Dim totalscore As Double
totalscore = WorksheetFunction.Sum(IIf(IsNumeric(frmQA.ComboBox3.Value), frmQA.ComboBox3.Value, 0), IIf(IsNumeric(frmQA.ComboBox4.Value), frmQA.ComboBox4.Value, 0), IIf(IsNumeric(frmQA.ComboBox5.Value), frmQA.ComboBox5.Value, 0), IIf(IsNumeric(frmQA.ComboBox6.Value), frmQA.ComboBox6.Value, 0), IIf(IsNumeric(frmQA.ComboBox7.Value), frmQA.ComboBox7.Value, 0), IIf(IsNumeric(frmQA.ComboBox8.Value), frmQA.ComboBox8.Value, 0), IIf(IsNumeric(frmQA.ComboBox9.Value), frmQA.ComboBox9.Value, 0))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM