VBA:根据颜色获取单元格值

VBA:根据颜色获取单元格值,vba,excel,Vba,Excel,因此,我有以下VBA代码: Function CountCcolor(range_data As Range, criteria As Range) As Long Dim datax As Range Dim xcolor As Long xcolor = criteria.Interior.ColorIndex For Each datax In range_data If datax.Interior.ColorIndex = xcolor Then Coun

因此,我有以下VBA代码:

Function CountCcolor(range_data As Range, criteria As Range) As Long

Dim datax As Range
Dim xcolor As Long

xcolor = criteria.Interior.ColorIndex

For Each datax In range_data
    If datax.Interior.ColorIndex = xcolor Then
        CountCcolor = datax.Select
    End If
Next datax

End Function
该代码在给定的范围内循环并搜索特定的背景颜色。然后,它获取该颜色的值并将其放入选定的单元格中

我的问题是,只有当背景颜色正确的数据是数字而不是文本时,这才有效

你知道为什么它不能从单元格中抓取文本吗

它只显示#值!如果它现在是文本

CountCcolor is defined as Long
代码应该是

Function CountCcolor(range_data As Range, criteria As Range) As String

Dim datax As Range
Dim xcolor As Long

xcolor = criteria.Interior.ColorIndex

For Each datax In range_data
    If datax.Interior.ColorIndex = xcolor Then
    CountCcolor = datax.Select
End If
Next datax
End Function

感谢@Shai Rado注意到了

是的,你将你的
函数CountCcolor定义为Long
,因此它只接受数字。我也尝试了datax.Text-但幸运的是你不能,因为你的
CountCcolor'定义为
Long`@ShaiRado-不敢相信我没有注意到!我改变了这个代码形式,计算了背景颜色的数量,所以忘记了改变那个位!谢谢