Excel VBA工作表求和函数在其中一个值为文本时返回错误

我得到这个错误:“运行时错误'1004'”“无法获得工作表函数类的Sum属性

我有一个代码,看起来在用户窗体中的多个combobox,并总结他们的值,用户select。 该代码工作正常,只有在combobox列表中的数字。 我最近在列表中添加了一个文本选项,我称之为“不适用”。 但是,一旦我运行代码,我得到上述错误。

我相信这个错误是因为我引入了文本选项,而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) ... 

在处理完成之前,validation用户所做的input是文本还是数字值可能会更好。

从粗略地看代码 – 我可以推测,“文本价值”可能沿着'123(见撇号)标记。这是可能的,但这将是最终用户的认真努力。

所以,恕我直言,在计算之前运行一个validation检查会更好(正如Scott Holtzman所build议的那样)。

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

伪代码示例:

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

上面的build议可以放在工作表事件中

祝你好运

问候

RDFS

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

 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))