Excel VBA问题与范围“应用程序定义或对象定义的错误”

我是全新的VBA和使用Excel 2013年。我一直在这个错误,我的脑袋一直在绞尽脑汁! 标有星号的行越来越多
“应用程序定义或对象定义的错误”

我的function应该做2件事…
1)给当前单元格一个值
2)改变另一个单元格的填充颜色

#1没有问题,但#2不断出错
这是我目前使用的代码…
我从Excel中的单元格中调用它,给它公式:= ScoreIt()

Function ScoreIt() Dim TotalVal As Integer, LRVal As Integer, LYVal As Integer, LGVal As Integer TotalVal = 0 LRVal = 0 LYVal = 1 LGVal = 2 Dim CurrentRow As String, BedCell As String, Beds As Integer CurrentRow = ActiveCell.Row BedCell = Range("K" & CurrentRow).Address(False, False) Beds = Range(BedCell).Value If (Beds < 2) Or (Beds > 5) Then TotalVal = TotalVal + LRVal ** Range(BedCell).Interior.ColorIndex = 38 ** ElseIf (Beds = 2) Or (Beds = 5) Then TotalVal = TotalVal + LYVal ** Range(BedCell).Interior.ColorIndex = 36 ** ElseIf (Beds = 3) Or (Beds = 4) Then TotalVal = TotalVal + LGVal ** Range(BedCell).Interior.ColorIndex = 35 ** End If ScoreIt = TotalVal End Function 

谢谢

工作表公式,甚至是UDF公式,都不能改变范围对象的属性或者返回一个值/改变另一个范围对象的属性。 该函数的返回值仅限于调用它的单元格。

我会build议重新devise你的代码,并分成一个返回值的函数和私人sub的颜色变化。

以下是Microsoft支持站点的摘录:

由工作表单元格中的公式调用的用户定义的函数不能更改Microsoft Excel的环境。 这意味着这样的function不能做到以下任何一项:

– 在电子表格中插入,删除或格式化单元格。

– 改变另一个单元格的值。

移动,重命名,删除或将工作表添加到工作簿。

– 更改任何环境选项,例如计算模式或屏幕视图。

– 将名称添加到工作簿。

– 设置属性或执行大多数方法。

用户定义函数的目的是允许用户创build一个自定义函数不包含在Microsoft Excel附带的函数中。 Microsoft Excel中包含的function也不能更改环境。 函数可以执行计算,将值或文本返回到所input的单元格中。任何环境更改都应通过使用Visual Basic子例程来完成。

您可以在这里find完整的文章: http : //support.microsoft.com/kb/170787