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

时间:2014-12-30 05:00:08

标签: excel vba range

我是VBA的新手,并使用excel 2013.我整天都在用这个错误绞尽脑汁!标有星号的线条正在变为
“应用程序定义或对象定义错误”

我的功能应该做两件事......
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



谢谢

1 个答案:

答案 0 :(得分:1)

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

我建议重新设计你的代码并分成一个返回值的函数,以及一个用于颜色变化的私有子。

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

  

工作表单元格中的公式调用的用户定义函数不能   更改Microsoft Excel的环境。这意味着这样的   功能不能执行以下任何操作:

     

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

     

- 更改另一个单元格的值。

     

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

     

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

     

- 将名称添加到工作簿。

     

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

     

用户定义函数的目的是允许用户创建   自定义函数,不包含在附带的函数中   Microsoft Excel。 Microsoft Excel中包含的功能也不能   改变环境。函数可以执行计算   将值或文本返回到输入它们的单元格。   任何环境变化都应该通过使用Visual来实现   基本子程序。

您可以在此处找到完整的文章:http://support.microsoft.com/kb/170787