我是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
谢谢
答案 0 :(得分:1)
工作表公式,甚至是UDF公式,不能更改范围对象的属性或返回值/更改另一个范围对象中的属性。函数的返回值仅限于调用它的单元格。
我建议重新设计你的代码并分成一个返回值的函数,以及一个用于颜色变化的私有子。
以下是Microsoft支持网站的摘录:
工作表单元格中的公式调用的用户定义函数不能 更改Microsoft Excel的环境。这意味着这样的 功能不能执行以下任何操作:
- 插入,删除或格式化电子表格中的单元格。
- 更改另一个单元格的值。
- 移动,重命名,删除或向工作簿添加工作表。
- 更改任何环境选项,例如计算模式或屏幕视图。
- 将名称添加到工作簿。
- 设置属性或执行大多数方法。
用户定义函数的目的是允许用户创建 自定义函数,不包含在附带的函数中 Microsoft Excel。 Microsoft Excel中包含的功能也不能 改变环境。函数可以执行计算 将值或文本返回到输入它们的单元格。 任何环境变化都应该通过使用Visual来实现 基本子程序。
您可以在此处找到完整的文章:http://support.microsoft.com/kb/170787