vba函数返回单元格背景颜色

时间:2018-06-05 18:18:06

标签: excel vba function

正如主题所说,我需要一个函数来返回单元格背景颜色。我的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和函数表之间建立连接。

这是这些论坛的主要问题。人们提出了工作代码,但他们并没有告诉你必须绕过代码才能使代码工作。这很可能就是我在这里所缺少的。

2 个答案:

答案 0 :(得分:1)

小改动:

Public Function ReturnedBackGroundColor(rngeADDY As String) As Long
    ReturnedBackGroundColor = Range(rngeADDY).Interior.Color
End Function

enter image description here

我们:

  • 传递字符串
  • 返回长

您可以选择传递StringRange。但是工作表单元格中的用法与VBA编码之间应该保持一致。

注意:

通常选择传递Range,因为这有助于确定正确的波动水平。

答案 1 :(得分:1)

删除.Offset(0, 0),返回Long(否则您的代码就没问了),并给它Range而不是String

=IF(ReturnedBackGroundColor(G9)=3,1,2)

G9是实际的单元格引用,而不是包含单元格地址的字符串文字。

这比从函数内部的字符串构建Range更可靠,因为当您从VBA代码调用它时,您不想假设当前活动的工作表。