正如主题所说,我需要一个函数来返回单元格背景颜色。我的vba功能是
Public Function ReturnedBackGroundColor(rnge As Range) As Integer
ReturnedBackGroundColor = rnge.Offset(0, 0).Interior.Color
End Function
在单元格中,我有
=IF(ReturnedBackGroundColor("G9") =3,1,2)
我收到#VALUE!
错误。我今天早上已经搜索了几个小时并且没有得到任何快乐。
我已尝试将该功能放入工作表代码和模块中。我尝试过Color和ColorIndex。我已经尝试了3和vbRed(由于我已经忘记的原因,BTW无法识别BTW。我已经尝试在表单代码和模块中公开该功能。我尝试在两种情况下重新计算表单。
我怀疑发生的事情是我必须设置一些内容,以便在vbred和函数表之间建立连接。
这是这些论坛的主要问题。人们提出了工作代码,但他们并没有告诉你必须绕过代码才能使代码工作。这很可能就是我在这里所缺少的。
答案 0 :(得分:1)
小改动:
Public Function ReturnedBackGroundColor(rngeADDY As String) As Long
ReturnedBackGroundColor = Range(rngeADDY).Interior.Color
End Function
我们:
您可以选择传递String
或Range
。但是工作表单元格中的用法与VBA编码之间应该保持一致。
注意:强>
通常选择传递Range
,因为这有助于确定正确的波动水平。
答案 1 :(得分:1)
删除.Offset(0, 0)
,返回Long
(否则您的代码就没问了),并给它Range
而不是String
:
=IF(ReturnedBackGroundColor(G9)=3,1,2)
G9
是实际的单元格引用,而不是包含单元格地址的字符串文字。
这比从函数内部的字符串构建Range
更可靠,因为当您从VBA代码调用它时,您不想假设当前活动的工作表。