Excel 在公式中调用函数时无法获取单元格的颜色

Excel 在公式中调用函数时无法获取单元格的颜色,excel,vba,Excel,Vba,我正在尝试获取Excel中单元格的显示颜色。因此,我使用以下函数: Function get_color() get_color = Cells(1,1).DisplayFormat.Interior.Color End Function 当从过程调用此函数时,它运行良好。但是,我无法将其返回值分配给单元格。事实上,用B12书写 =get_color() 产生一个值错误 按照惯例,类内部的成员颜色是一个变量对象,实际上是一个长对象,因此问题不在于Excel不能将外来值指定给单元格 我该如

我正在尝试获取Excel中单元格的显示颜色。因此,我使用以下函数:

Function get_color()
  get_color = Cells(1,1).DisplayFormat.Interior.Color
End Function
当从过程调用此函数时,它运行良好。但是,我无法将其返回值分配给单元格。事实上,用B12书写

=get_color()
产生一个值错误

按照惯例,类内部的成员颜色是一个变量对象,实际上是一个长对象,因此问题不在于Excel不能将外来值指定给单元格


我该如何获取一个单元格的外观颜色并将其写入另一个单元格?

只需删除
.DisplayFormat
部分,它就可以变成
get\u color=Cells(1,1).Interior.color
。 您还可以尝试以下操作,以便能够捕捉给定单元格的颜色:

Function get_color(myCell As Range) As Long
  Dim ws As Worksheet
  Set ws = ActiveSheet
  get_color = ws.Cells(myCell.Row, myCell.Column).Interior.Color
End Function

您可以在这样的代码中使用它:
a=get\u color(Range(“A1”)
或在这样的工作表中使用它:
=get\u color(A1)

如果此单元格是通过条件格式设置的,那么简短的回答是您不能从工作表中调用的udf中使用它。Displayformat无法从工作表中调用。只有displayformat可以看到条件格式。测试导致格式化的规则比测试格式化要好。@ScottCraner事实上,我使用的是条件格式化。是否可以在不必写两次的情况下检查条件格式规则?这样做的目的是避免用户在修改工作表时必须使用VBA。如果单元格是通过条件格式着色的,则无法返回颜色。